Json 节点获取 asLocalDate

Json node get asLocalDate

美好的一天,

请帮忙,我检查了 Jackson JsonNode 但我似乎找不到我要找的东西。

我需要知道如何将 JsonNode 作为 LocalDate

// Example : I can get int value like :

ObjectMapper mapper = new ObjectMapper();
final JsonNode data =mapper.readTree(json);
Int myNumberInt = data.get ("ngNumberInt").asInt();

LocalDate怎么样,如何从JsonNode获取?

在我看来,我希望有

LocalDate dateCreated = data.get ("ngDate").asLocalDate(); 

JsonNode 方法只会为您提供 JSON 数据类型。但是,您可以使用 ObjectMapper 实例反序列化 LocalDate。

objectMapper.readValue(data, LocalDate.class)

如果您还没有,则需要添加 jackson-modules-java8。这包括 serializer/deserializer 用于 Java 的 LocalDate。

派对可能有点晚了,但您也可以读取字符串然后解析它:

LocalDate date = LocalDate.parse(data.get ("ngDate").asText()); 

如果日期格式为 ISO_LOCAL_DATE,这将起作用,否则:

DateTimeFormatter formatter = DateTimeFormatter.ofPattern("d-MMM-yyyy");
LocalDate date = LocalDate.parse(data.get("ngDate").asText(), formatter);

这里DateTimeFormatter.ofPattern的参数可以是任何日期格式。在示例中,它将解析类型为“1-Aug-2009”的日期字符串。

使用convertValue方法

LocalDate date = mapper.convertValue(data.get("date"), LocalDate.class);

如上所述,正确的 java8 日期时间反序列化程序必须在您的对象映射器上注册