Java 将RequestBody解析为参数

Java 将RequestBody解析为参数,java,json,postman,body-parser,Java,Json,Postman,Body Parser,我有一个代码,它从邮递员那里得到一个bodyPOST: 邮递员: 字符串如下所示: %7B%0A%09%22idn%22%3A%22MLCM00292%22%2C%0A%09%22monto%22%3A%229149.92%22%0A%7D= 粗体字是参数及其指定值。我想接收变量之类的参数。在POST请求中从主体获取参数的正确方法是什么?我的代码中缺少了什么?您可以使用这样的代码: public JsonResponse dep(@RequestBody Map<String, Strin

我有一个代码,它从邮递员那里得到一个body
POST

邮递员:

字符串如下所示:

%7B%0A%09%22idn%22%3A%22MLCM00292%22%2C%0A%09%22monto%22%3A%229149.92%22%0A%7D=

粗体字是参数及其指定值。我想接收变量之类的参数。在POST请求中从主体获取参数的正确方法是什么?我的代码中缺少了什么?

您可以使用这样的代码:

public JsonResponse dep(@RequestBody Map<String, String> body)
String id = body.get("idn");
String monto = body.get("monto");
您可以根据需要更改
Map
类的泛型类型。例如,如果要接收不同类型的值,可以像
映射体那样使用它,然后可以根据数据类型(必须事先知道)解析每个值。比如:

String id = body.get("idn").toString();
double monto = Double.parseDouble(body.get("monto").toString());
对于更复杂的数据类型,我建议您创建一些自定义POJO或JavaBeans

进一步阅读


我得到下一个json
{“timestamp”:“2018-10-24T15:12:26.847+0000”,“status”:415,“error”:“Unsupported Media Type”,“message”:“Content Type”application/x-www-form-urlencoded;charset=UTF-8“not supported”,“path”:“/irs/development”}
消息是
Content Type”application/x-www-form-urlencoded;charset=UTF-8“不受支持”
内容类型”应用程序/x-www-form-urlencoded;charset=UTF-8“不支持”
@franzs如果您需要以
application/x-www-form-urlencoded
的形式发送信息?如果没有,您可以通过在邮递员请求>
Body
raw
JSON(application/JSON)
选项中设置来将其作为JSON发送。@FranzSif或您可以尝试设置
@RequestMapping
consumes=application\FORM\urlu encoded\u value
String id = body.get("idn");
String monto = body.get("monto");
String id = body.get("idn").toString();
double monto = Double.parseDouble(body.get("monto").toString());