我有Json数据,例如
{"no":["1","2","3"],"date":["23/05/1992","02/01/1991","01/05/1992"]}
我想拆分成Java中正确的格式。
答案 0 :(得分:2)
两种主要方法:
1)定义一个类来映射它:
public class Foo{
private List<String> no;
private List<LocalDate> date;
// setters or factory method
}
并使用诸如Jackson的Json API:
ObjectMapper mapper = new ObjectMapper();
Foo foo = mapper.readValue(myStringRepresentingJson, Foo.class)
您可能需要使用和设置JsonDateSerializer
实例来指定日期格式。
2)定义自定义JSON反序列化器。
它允许更精细和编程地控制将json属性映射到Java对象的方式。
使用Jackson,可以扩展类StdDeserializer
。
答案 1 :(得分:2)
尝试以下代码,
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);
答案 2 :(得分:0)
您可以通过Gson库映射对象。
YourObj obj = new Gson().fromJson(jsonString, YourObj.class);
准备一个没有no和name属性的POJO类。
List<String> no;
List<String> date;
Gson是一个开源Java库,用于将Java对象序列化和反序列化为JSON。