Чтение JSON из ресурсов, когда файл содержит несколько JSON

#android #json #file #android-studio #assets

#Android #json #файл #android-studio #ресурсы

Вопрос:

Как прочитать JSON из файла, который содержит несколько JSON?

Я имею в виду, я выглядит так:

 {
  "status": false,
  "info": "The email field is required."
}

{
  "status": false,
  "info": "The email field is required."
}

{
  "status": false,
  "info": "The email field is required."
}

{
  "status": false,
  "info": "The email field is required."
}

{
  "status": false,
  "info": "The email field is required."
}

{
  "status": false,
  "info": "The email field is required."
}
  

Например. я хотел бы получить массив JSON или возможность чтения JSON с номером 1 или 4.

Комментарии:

1. Если вы не можете повлиять на json-файл, вы можете использовать библиотеки, такие как jackson, где вы можете настроить синтаксический анализ, но не обязательно делать все вручную.

2. затем добавьте «[» в начале и «]» в конце вашего потока, и у вас будет JSONArray из JSONObject s

3. @pskink но что, если я не могу изменить этот файл? Есть ли способ прочитать JSON-файлы в массив или что-то в этом роде?

4. хорошо, забудьте, что я сказал, я не заметил, что элементы не разделены символом «,» поэтому то, что я сказал, не сработает

Ответ №1:

Приведенный выше формат json неверен. Правильный формат json будет

 [{
  "status": false,
  "info": "The email field is required."
},
{
  "status": false,
  "info": "The email field is required."
},
{
  "status": false,
  "info": "The email field is required."
},
{
  "status": false,
  "info": "The email field is required."
},
{
  "status": false,
  "info": "The email field is required."
},
{
  "status": false,
  "info": "The email field is required."
}]
  

Это вы можете получить как JSONArray

Комментарии:

1. Нет. Это не один JSON — это несколько JSON в одном файле.

Ответ №2:

Если вы можете положиться на структуру, которую вы описали, то самым простым решением здесь было бы разделить ее на два последовательных символа новой строки, которые дадут вам отдельные объекты, которые затем могут быть проанализированы традиционными способами, т. Е.. новый JSONObject() …

Однако, если файл, который вы получаете, НЕ сгенерирован и возможна человеческая ошибка, автоматизировать подобный процесс действительно опасно … Гораздо безопаснее, но и дороже в разработке было бы создавать объекты путем проверки наличия пар заключающих { } символов.. Вы можете начать с поиска первой открывающей скобки и для каждой следующей другой последовательной открывающей скобки игнорировать одну закрывающую скобку на пути, пока не закроете корневой объект.. Это может быть легко достигнуто с помощью рекурсии

Это все еще далеко от пуленепробиваемости, но потенциальная ошибка должна быть обнаружена при окончательном разборе конструктором JSONObject ..