У меня есть JSONObject, как и результат по этой ссылке: https://hadoop.apache.org/docs/r1.0.4/webhdfs.html#GETFILESTATUS Я бы хотел получить суффикс пути (имена файлов) и время модификации (даты) ...

0
Isabelle 3 Мар 2021 в 00:13

3 ответа

Лучший ответ

Если вы хотите сохранить JSON-объект filename:modificationTime, вы можете сделать это, построив карту, содержащую ваши пары key и value:

JsonArrayBuilder builder = Json.createArrayBuilder();
for (int i = 0; i < fileStatus.size(); i++) {

    JsonObject rec = fileStatus.getJsonObject(i);
    String timeStamp = rec.get("modificationTime").toString();
    Map<String, Object> jsonMapping = Map.of(rec.getString("pathSuffix"),
                timeStamp);
    builder.add(Json.createObjectBuilder(jsonMapping));
}

После этого для json из вашей ссылки builder.build() выдаст JsonArray вроде этого:

[
    {
        "a.patch":"1320171722771" // FileStatus.pathSuffix : FileStatus.modificationTime
    },
    {
        "bar":"1320895981256"
    }
]

Если только вам не нужно создать определенную дату из метки времени, я настоятельно рекомендую сохранить полученную метку времени как есть. Это связано с тем, что создание любого LocalDate (или того хуже: Date) из метки времени приведет к неточным датам, если вы не учитываете TimeZone как места, где произошла модификация файла, так и значение модификацииTime читать.

1
Sorin 3 Мар 2021 в 10:23

Попробуйте эту структуру json

[
  {
     fileName:"test.java",
     modificationTime:"2021-03-02 xx:xx:xx"
  },
  {
     fileName:"test2.java",
     modificationTime:"2021-03-01 xx:xx:xx"
  }

]

0
hallywang 3 Мар 2021 в 02:28

Json не поддерживает тип времени, что и является причиной ошибки. Что вам нужно сделать, так это изменить его на тип, который может использовать json. Это может быть строка, представляющая время (выберите форматирование самостоятельно, чтобы быть уверенным, что при повторном чтении у вас будут согласованные данные) или, что проще, вы просто сохраните используемое длинное значение.

Здесь вы можете увидеть, что может использовать json: https://www.json.org/json-en.html

1
Jelumar 2 Мар 2021 в 22:40