如何以自定义格式提取 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.