Получить JSON в запросе POST - PullRequest
0 голосов
/ 05 июня 2018

Я отправляю запрос POST:

var arr = { State: 'Moscow', Age: 25 };
var url = "/google/modifiedPolygon";
$.ajax({
  url: url,
  type: 'POST',
  data: arr,
  contentType: 'application/json; charset=utf-8',
  dataType: 'json',
  async: false,
  success: function() {
      alert("msg");
  }
}); 

И обрабатываю из бэкэнда как:

@RequestMapping(value="/modifiedPolygon",method = RequestMethod.POST,consumes = "application/json")
public void modifiedPolygon(@RequestBody JSONObject data, HttpServletRequest request, ModelMap model) {
    System.out.println(data);
}

Но я получаю следующую ошибку:

org.springframework.http.converter.HttpMessageNotReadableException:
Не удалось прочитать JSON: нераспознанный токен 'State': ожидалось ('true', 'false' или 'null')

Ответы [ 3 ]

0 голосов
/ 05 июня 2018

Вы можете использовать вот так,

var arr = { state: 'Moscow', age: 25 };
var url = "/google/modifiedPolygon";
$.ajax({
  url: url,
  type: 'POST',
  data: { "dataValue": JSON.stringify(arr)},
  contentType: 'application/json; charset=utf-8',
  dataType: 'json',
  async: false,
  success: function() {
      alert("msg");
  }
});

Теперь вы можете получить «dataValue» в backEnd из параметра body.

0 голосов
/ 05 июня 2018

Я пробовал следующую реализацию Java, и она кажется работающей.

@RequestMapping(value="/modifiedPolygon",method = RequestMethod.POST,consumes = "application/json")
public ResponseEntity<JSONObject> modifiedPolygon(@RequestBody JSONObject data, HttpServletRequest request, ModelMap model) {
    return new ResponseEntity<JSONObject>(data,HttpStatus.OK);
}

Первый тест с POSTMAN или curl, если проблема не устранена, попробуйте с этим.

var arr = { state: 'Moscow', age: 25 };
var url = "/google/modifiedPolygon";
$.ajax({
  url: url,
  type: 'POST',
  data: JSON.stringify(arr),
  contentType: 'application/json; charset=utf-8',
  dataType: 'json',
  async: false,
  success: function() {
      alert("msg");
  }
});

И, пожалуйста,включить фильтры CORS.

Вот рабочий снимок.

enter image description here

enter image description here

Добавить эту зависимость в pom.xml

<dependency>
          <groupId>com.googlecode.json-simple</groupId>
          <artifactId>json-simple</artifactId>
          <version>1.1.1</version>
      </dependency>

Пожалуйста, найдите здесь изменения Java-кода

https://github.com/supun/Shopping/blob/master/src/main/java/com/shopping/controller/MainController.java

0 голосов
/ 05 июня 2018

Похоже, что State является логическим типом на стороне службы, но вы отправляете строковое значение как State.Так что проверьте тип данных для Государства службы, ожидающей.

...