【问题标题】:Json node get asLocalDateJson 节点获取 asLocalDate
【发布时间】:2018-05-21 14:19:41
【问题描述】:

早安,

请帮忙,我检查了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(); 

【问题讨论】:

    标签: java angularjs json jackson localdate


    【解决方案1】:

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

    objectMapper.readValue(data, LocalDate.class)
    

    如果您还没有添加jackson-modules-java8,则需要添加。这包括用于 Java 的 LocalDate 的序列化器/反序列化器。

    【讨论】:

    • 非常感谢您的回复..好吧,我有点困惑我还是春天的新手...说我有 $scope.mydata = { date: $scope.created } 如何提取日期从这个 json ...读取值指向整个 json 还是特别是日期对象?如果日期 obj 我如何指向并从 json 中提取日期 ...
    • .readValue 将您的 date 作为参数。使用 Jackson 读取 JSON 的方法有很多。这个问题不是 Spring 特有的,而是 Jackson 库(Spring 使用的)。我建议阅读有关杰克逊的更多信息。
    • 好的,这方面的数据参数是什么?数据是我的日期字段吗? @Gozard 提前谢谢你,感谢你的回复
    • 是的,我的示例中的data 与您的问题(JsonNode)中的data 相同。当然,这只有在 data 的值采用 LocalDateDeserialized 可以理解的格式时才有效。
    【解决方案2】:

    使用convertValue 方法

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

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

    【讨论】:

      【解决方案3】:

      聚会可能有点晚了,但您也可以将其读取为字符串,然后对其进行解析:

      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”的日期字符串。

      【讨论】:

        猜你喜欢
        • 2021-07-01
        • 2020-03-05
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-12-01
        • 1970-01-01
        • 2018-10-10
        相关资源
        最近更新 更多