У меня есть два класса
public class Parent {
private String name;
private int age;
private ArrayList<Child> children = new ArrayList<Child>();
//Setters and getter to follow..
}
public Class Child {
private String name;
private int age;
}
Конфигурация Spring включает в себя:
<bean id="jsonMessageConverter"
class="org.springframework.http.converter.json.MappingJacksonHttpMessageConverter" />
<bean
class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter">
<property name="messageConverters">
<list>
<ref bean="jsonMessageConverter" />
</list>
</property>
</bean>
Контроллер выглядит следующим образом:
@RequestMapping(value = "/parents",
method = RequestMethod.POST,
headers="Content-Type=application/json")
public @ResponseBody Parent add(@RequestBody Parent parent, Model model) {
logger.debug("Received request to add a parent");
Parent tempParent = parentService.add(parent); // This will persist the parent object to the DB.. (Helper class)
return tempContract;
}
В нормальных условиях он должен связать входящий json с Parent и вернуть Parent как Json в ответе. И это дает мне исключение: «Запрос, отправленный клиентом, был синтаксически неверным». со следующим вводом Json:
{
"name" : "foo",
"age" : "45",
"children" : [
{
"name" : "bar",
"age" : "15""
},
{
"name" : "baz",
"age" : "10""
}
]
}
Попытался изменить json, и он работает просто отлично, связывая @RequestBody и @ResponseBody со следующими форматами:
{
"name" : "foo",
"age" : "45",
"children" : []
}
и
{
"name" : "foo",
"age" : "45",
"children" : [
{}
]
}
Таким образом, я предполагаю, что что-то не так в том, что касается фактического дочернего класса или способа передачи объекта Json по отношению к дочернему объекту. Может кто-нибудь, пожалуйста, помогите мне здесь. Также предлагается использовать
private ArrayList<HashMap<String, Child>> children = new ArrayList<HashMap<String, Child>>();
вместо
private ArrayList<Child> children = new ArrayList<Child>();
Спасибо.