【问题标题】:Date Format [ 2020, 9, 15 ]: What type of format is this?日期格式 [2020, 9, 15]:这是什么格式?
【发布时间】:2020-09-22 03:28:45
【问题描述】:

我正在尝试使用有几个日期的外部 json。日期格式为:[ 2020, 9, 15 ] 我尝试将其用作字符串,但没有成功。

你能告诉我这是什么格式吗

【问题讨论】:

  • 就 JSON 而言,这是一个包含三个元素的数组。这是一种表示日期的奇怪方式,但是一旦将它作为数组得到,你应该如何处理它是相当清楚的。
  • 哦,是的!这是一个数组。我完全错过了。感谢您的简化,是的,我正在使用 Jackson 库。

标签: java json date date-format


【解决方案1】:

java.time

将 JSON 数字数组读入 Java int[]int 数组)并从中构造一个 LocalDate

    int[] arrayFromJson = { 2020, 9, 15 };
    System.out.println("Array from JSON: " + Arrays.toString(arrayFromJson));
    
    LocalDate date = LocalDate.of(arrayFromJson[0], arrayFromJson[1], arrayFromJson[2]);
    System.out.println("Date as LocalDate: " + date);

输出是:

Array from JSON: [2020, 9, 15]
Date as LocalDate: 2020-09-15

LocalDate 是 java.time 中的类,现代 Java 日期和时间 API,用于表示没有时间的日期,因此在这里使用正确的类。

读取和解析 JSON

如何将 JSON 读入 Java?这取决于您使用哪个库来执行此操作。以下是使用 Jackson 的示例:

    ObjectMapper mapper = new ObjectMapper();
    String json = "[ 2020, 9, 15]";

    int[] arrayFromJson = mapper.readValue(json, int[].class);
    System.out.println(Arrays.toString(arrayFromJson));
[2020, 9, 15]

【讨论】:

  • 实际上,我的 json 有很多数据,日期是其中之一。所以我使用如下映射器:Map<String, List<MyObject>> root = mapper.readValue(jsonFile, new TypeReference<Map<String, List<MyObject>>>() {}); List<MyObject> objects = root.get("myObject"); 我有点困惑如何获取日期并用 pojo 映射它。
  • MyObject是如何设计和声明的?然后它有一个int[] 或类似的内部,还是嵌套更深?
猜你喜欢
  • 1970-01-01
  • 2012-07-19
  • 2021-06-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-06-18
  • 2016-04-28
相关资源
最近更新 更多