Как проверить requestbody, который содержит несколько допустимых запросов json? - PullRequest
0 голосов
/ 24 января 2019

Когда я отправляю несколько запросов json в теле запроса для запроса POST, первый запрос принимается, а остальные игнорируются.

Я не хочу отправлять список в качестве запроса, на самом деле я отправляю несколько запросов или повторяю запрос в requestbody.

Вот пример:

Запрос:

{
  "Business": {
    "name": "ABC"
  }
}
{
  "Business": {
    "name": "XYZ"
  }
}

Метод контроллера:

Report getData(@RequestBody final Info info){ 
//Some code here... 
} 

Здесь Информация - это класс модели, который дополнительно имеет Бизнес класс с методами получения и установки

Когда я отправляю POST выше запроса во время десериализации, первый блок преобразуется в объект Java, а второй просто игнорируется. Я знаю, что это действительно JSON, но не мог понять, почему 2-й блок игнорируется во время десериализации.

Я попробовал свойства десериализации и парсера Джексона, но не смог найти легкодоступного решения. Я использую библиотеку Джексона и Spring Boot Framework.

Я ожидаю, что он будет выдавать неверный запрос вместо того, чтобы рассматривать его как действительный запрос json.

Предложите подход для достижения этой цели. Спасибо!

Ответы [ 3 ]

0 голосов
/ 24 января 2019

Таким образом, ваша аннотация @RequestBody должна использовать List<Info> вместо Info, и вы также должны использовать список json при отправке данных [{"name": "ABC"},{"name": "XYZ"}]

0 голосов
/ 24 января 2019

Вы можете разместить JsonArray следующим образом:

[
    {
      "Business": {
        "name": "ABC"
      }
    }
    {
      "Business": {
        "name": "XYZ"
      }
    }
]

, чем просто перебрать JsonObjects. Вы можете использовать GSON от Google или то, что лично мне нравится, MinimalJson (https://mvnrepository.com/artifact/com.eclipsesource.minimal-json/minimal-json) зависимость для анализа объектов и определения, соответствуют ли они стандарту.

0 голосов
/ 24 января 2019

Вы отправляете list, поэтому лучше быть в следующем формате:

{
"Businesses" : [
       {"name": "ABC"},
       {"name": "ABC"}
       ]
}

А в случае получения list ваш метод в контроллере должен принять список:

@POST
@Path("/somePath")
@Consumes({ MediaType.APPLICATION_JSON })
your_method(ArrayList<Business> businesses){
     //...your code
}
...