Парсинг RequestBody к параметрам - PullRequest
0 голосов
/ 24 октября 2018

У меня есть код, который получает тело POST от Почтальон :

@RequestMapping(value="/dep", method=RequestMethod.POST)
public JsonResponse dep(@RequestBody String body) throws SQLException {

    Connection connection = ConnectionSingleton.getInstance().getConnection(env);

    Statement statement = connection.createStatement();

    statement.close();
    connection.close();
    System.out.println("BODY #### "+body);
    return new JsonResponse("depreciated");
}

Почтальон отправлено:

{
    "idn":"MLCM00292",
    "monto":"9149.92"
}

И строка выглядит так:

% 7B% 0A% 09% 22 * ​​1014 * idn % 22% 3A% 22 * ​​1016 * MLCM00292 % 22% 2C% 0A% 09% 22 monto % 22% 3A% 22 * ​​1020 * 9149.92 % 22% 0A% 7D =

Слова, выделенные жирным шрифтом, представляют собой параметры и их назначенные значения.Я хочу получить параметры как переменные.Какой правильный способ получить параметры из тела в запросе POST?Чего не хватает в моем коде?

1 Ответ

0 голосов
/ 24 октября 2018

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

public JsonResponse dep(@RequestBody Map<String, String> body)

, а затем внутри метода получить значения, подобные этому:

String id = body.get("idn");
String monto = body.get("monto");

Вы можете изменитьтип generics для класса Map в соответствии с вашими потребностями.Например, если вы собираетесь получать значения разных типов, вы можете использовать его, например, Map<String, Object> body, тогда вы можете проанализировать каждое значение в соответствии с типом данных (который вы должны знать заранее).Примерно так:

String id = body.get("idn").toString();
double monto = Double.parseDouble(body.get("monto").toString());

Для более сложных типов данных я рекомендую вам создать несколько пользовательских POJO или JavaBeans.

Дополнительные сведения

...