将RequestBody解析为参数

时间:2018-10-24 14:18:24

标签: java json postman body-parser

我有一个代码可以从邮递员获取尸体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 idn %22%3A%22 MLCM00292 %22%2C%0A%09%22 monto %22%3A%22 9149.92 %22%0A%7D =

粗体字是参数及其分配的值。我想接收像变量这样的参数。在POST请求中从主体获取参数的正确方法是什么?我的代码中缺少什么?

1 个答案:

答案 0 :(得分:1)

您可以像这样使用Map

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

然后在方法内部获取如下值:

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

您可以根据需要更改Map类的泛型类型。例如,如果您要接收不同类型的值,则可以像Map<String, Object> body那样使用它,那么您可以根据数据类型(必须事先知道)来解析每个值。像这样:

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

对于更复杂的数据类型,建议您创建一些自定义POJO或JavaBean。

更多读数