如何以自定义格式提取 JSON 数据?
How to extract JSON data in customized format?
我有 Json 数据
{"no":["1","2","3"],"date":["23/05/1992","02/01/1991","01/05/1992"]}
我想拆分为 java.
中的正确格式
两种主要方式:
1) 定义一个class来映射它:
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 对象的方式。
对于 Jackson,扩展 class StdDeserializer
是一种可能。
试试下面的代码,
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);
您可以通过 Gson 库映射您的对象。
YourObj obj = new Gson().fromJson(jsonString, YourObj.class);
准备一个没有 name 属性的 POJO class。
List<String> no;
List<String> date;
Gson 是一个 open-source Java 库,用于将 Java 对象序列化和反序列化为 JSON.
我有 Json 数据
{"no":["1","2","3"],"date":["23/05/1992","02/01/1991","01/05/1992"]}
我想拆分为 java.
两种主要方式:
1) 定义一个class来映射它:
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 对象的方式。
对于 Jackson,扩展 class StdDeserializer
是一种可能。
试试下面的代码,
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);
您可以通过 Gson 库映射您的对象。
YourObj obj = new Gson().fromJson(jsonString, YourObj.class);
准备一个没有 name 属性的 POJO class。
List<String> no;
List<String> date;
Gson 是一个 open-source Java 库,用于将 Java 对象序列化和反序列化为 JSON.