如何提取自定义格式的JSON数据?

时间:2019-07-12 06:06:54

标签: java json date date-parsing

我有Json数据,例如 {"no":["1","2","3"],"date":["23/05/1992","02/01/1991","01/05/1992"]} 我想拆分成Java中正确的格式。

3 个答案:

答案 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。