2016-03-01 6 views
0

Я пытаюсь передать массив объектов в виде строки JSON в контроллер Spring. Мои данные в формате JSON выглядит400 (Bad Request) при передаче контроллера JSON to Spring

[{ 
    "id": 123456, 
    "name": "First Item" 
}, 
{ 
    "id": 78910, 
    "name": "Second Item" 
}] 

Я посылаю к контроллеру

@RequestMapping(value = "/some/url", method = RequestMethod.POST, consumes = "application/json") 
public void doSomething(@RequestBody List<CustInfo> myCustInfoList) { 
    System.out.println("Message Received " + myCustInfoList); 
} 

с этим AJAX вызова

$.ajax({ 
    type: 'POST', 
    url: '/some/url', 
    contentType: 'application/json', 
    data: '[{"id": 123456, "name": "First Item"}, {"id": 78910, "name": "Second Item"}]', 
    success: function() { 
      consloe.log("Success"); 
      } 
}); 

Для этого у меня есть два фасоль OuterCover и CustInfo. Где OuterCover имеет список CustInfo и CustInfo имеет id и name.

public class OuterCover { 

    List<CustInfo> myCustInfoList; 

    //getter & setter 

} 

Но я получаю 400 (плохой запрос) на этом. Любое предложение?

ответ

0

Вы должны заключить класс OuterCover в другой класс, поскольку запрос имеет элемент OuterCover. Например.

class RequestDto{ 

    @JsonElement("outerCover") 
    private OuterCover outerCover; 

    //getters and setters 
} 

В качестве альтернативы, вы можете изменить полезную нагрузку запроса и удаление 'наружное покрытие' элемент, например:

[{ 
    "id": 123456, 
    "name": "First Item" 
}, 
{ 
    "id": 78910, 
    "name": "Second Item" 
}] 
+0

Что делать, если я хочу отправить в 'данных: {[{ "ID": 123456,«имя ":« Первый элемент »}, {« id »: 78910,« name »:« Second Item »}]}' –

+0

Это будет работать, я добавил другое решение в свой ответ. –

+0

Могу я просто использовать 'OutCover' в контроллере? Я хочу избежать необходимости создавать еще один класс ('RequestDto'). –