3 回答
TA贡献1841条经验 获得超3个赞
两种主要方式:
1)定义一个类来映射它:
public class Foo{
private List<String> no;
private List<LocalDate> date;
// setters or factory method
}
并使用 Json API,例如 Jackson :
ObjectMapper mapper = new ObjectMapper();
Foo foo = mapper.readValue(myStringRepresentingJson, Foo.class)
您可能需要使用并设置一个JsonDateSerializer实例来指定日期格式。
2) 定义自定义 JSON 反序列化器。
它允许以编程方式更精细地控制将 json 属性映射到 Java 对象的方式。
有了杰克逊,扩大班级StdDeserializer是有可能的。
TA贡献1852条经验 获得超7个赞
试试下面的代码,
public class Req {
private List<String> no;
private List<String> date;
public List<String> getNo() {
return no;
}
public void setNo(List<String> no) {
this.no = no;
}
public List<String> getDate() {
return date;
}
public void setDate(List<String> date) {
this.date = date;
}
}
用法
直接使用控制器方法
@PostMapping("/test")
public ResponseEntity<?> test(@RequestBody Req req) {
System.out.println(req.no);
}
使用 Gson 创建对象
Gson gson = new GsonBuilder().create();
Req req = gson.fromJson(yourjson, Req.class);
将字符串日期转换为 LocalDate
String date = "02/01/1991";
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("d/MM/yyyy");
LocalDate d = LocalDate.parse(date, formatter);
添加回答
举报