Отправка карты в почтовом запросе почтальона - PullRequest
0 голосов
/ 09 марта 2019

Я не могу найти хороший ответ относительно того, как отформатировать карту в моем сообщении json, когда я хочу, чтобы она отображалась непосредственно в мое Java-приложение с аннотацией @RequestBody.Я предполагаю, что json будет выглядеть примерно так:

{
    "myInt":"10",
    "myMap":"{1:\"A\"}"
}

У моего pojo будет поле myInt и поле myMap.Поле myMap имеет тип Map<Integer,String>

Как выглядит json для карты, чтобы заставить это работать?

Ответы [ 2 ]

2 голосов
/ 09 марта 2019

Согласно вашей структуре JSON myMap - это String.Однако даже если вы удалите кавычки из значения myMap, вы обнаружите, что {1:"A"} не является допустимым JSON, для правильного синтаксиса JSON необходимо, чтобы все ключи свойств были строками.Действительная структура JSON будет выглядеть как {"1":"A"}.Десериализатор должен иметь возможность принудительно вводить ключ в Integer, поэтому Map<Integer, String> в порядке.

1 голос
/ 09 марта 2019

Во-первых, убедитесь, что у вас есть что-то вроде следующего метода ресурса:

@Path("/url")
public class Test {

    @POST
 @Consumes(MediaType.APPLICATION_JSON)
    public Response post(@RequestBody Foo foo) {
        ...
    }
}

Затем, когда вы отправляете запрос через POSTMAN, выберите тип POST, затем выберите опцию «raw» и просто отправьте JSON в «теле» со значениями, которые вы хотите поместить в вашу карту. Не забудьте выбрать «приложение / JSON». Джексон превратит JSON в карту для вас.

{
   "myInt": 10,
   "myMap": {
         1: "A"
     }
}
...