Как написать правильный файл JSON на Java? - PullRequest
0 голосов
/ 22 октября 2019

Я получаю следующий объект JSON от почтальона:

{"Name":"one","age":"22"}

Если файл пуст, он должен быть вставлен следующим образом:

[{"Name":"one","age":"22"}]

else:

[{"Name":"one","age":"22"},{"Name":"one","age":"22"}]

Спасибо.

Ответы [ 2 ]

0 голосов
/ 23 октября 2019

Поскольку вы не упомянули слишком много подробностей, я предположил, что вы всегда можете получить ответ HTTP (например, код состояния HTTP равен 200.), и ответ всегда является допустимой строкой JSON.

Простой способ добиться этого - использовать List<Map<String, Object>> для манипулирования данными. Следующий фрагмент кода (без учета какой-либо обработки исключений) показывает, как использовать List<Map<String, Object>> для чтения и записи файла с ним.

Пример кода (написанный на Java 8 с парсером Jackson JSON)

List<Map<String, Object>> jsonList = new ArrayList<Map<String, Object>>();

Path path = Paths.get("json_result.txt"); //this file already existed

//read file and save content into jsonList
Stream<String> lines = Files.lines(path);
lines.forEach(line -> {
   try {
       jsonList.addAll(mapper.readValue(line, new TypeReference<List<Map<String, Object>>>(){}));
   }
   ...
}

//add new response string into jsonList and write to file
String responseStr = "{\"Name\":\"one\",\"age\":\"22\"}";
jsonList.add(mapper.readValue(responseStr, new TypeReference<Map<String, Object>>(){}));
Files.write(path, jsonList.toString().getBytes());
0 голосов
/ 22 октября 2019

Это немного неясно, но вы хотите передать обратно Collection или массив для квадратных скобок [].

Грубо говоря, {} отображается на объект Java. [] сопоставляется с коллекцией java, такой как ArrayList

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...