2014-10-17 5 views
0

Я использую структуру Spring 4.1 для разработки веб-сервисов. Когда я возвращаю объект Java в качестве ответа, он автоматически преобразуется в JSON и доставляется клиенту, поэтому я предполагаю, что парсер JSON находится в пути к классам и настроен правильно. Однако он не может преобразовать тело запроса из JSON в объект Java и клиент получает ответ HTTP 400.Разбор тела запроса JSON с пружиной MVC

Вот как вебсервис выглядит следующим образом:

Вот как запрос выглядит следующим образом:

Method: Post 
Content-Type: application/json; charset=utf-8 
Body: {"code":0,"area":12} 

Если я собираю тело запроса в виде строки и разобрать его вручную, то она работает, поэтому он получает действительный JSON, но по какой-то причине не разбор его автоматически. Я не знаю, как это исправить. Пожалуйста помоги. Заранее спасибо.

+0

Я не уверен, но, возможно, json-конвертер не собирает частные свойства. Попытайтесь добавить геттеры и сеттеры для них в классе сведений или определить их как общедоступные. Если вы используете jackson, вы можете также аннотировать их с помощью '@ JsonProperty' – Vladimir

+0

Добавление @JsonProperty теперь дает код ответа 415. – Aarkan

ответ

1

У вас есть приватные свойства в вашем классе Details, поэтому они, вероятно, не распознаются json-конвертером.

У вас есть несколько вариантов:

  • определить их как общественные (не рекомендуется)
  • обеспечивают методы получения и установки
  • если вы используете Джексон, вы можете аннотировать их @JsonProperty, оставляя их пакет- частный
+0

Спасибо. Пытались сделать их публичными - нет разницы. Добавление @JsonProperty теперь дает код ответа 415. – Aarkan

+0

415 может появиться во время сериализации ответа - вы уверены, что запрос все еще не попадает внутрь метода? Попробуйте добавить точку останова или некоторый вывод консоли в начале метода. – Vladimir

+0

Да, я добавил точку останова, но она не попала. – Aarkan

1

И наконец, я получил причину этого. Я использовал внутренние классы, которые не были статическими. Эта статическая проблема устранена.

Смежные вопросы