Из того, что я могу прочитать на json.org , все строки JSON должны начинаться с {
(фигурные скобки), а [
символы (квадратные скобки) представляют элемент массива в JSON.
Я использую json4j
библиотеку, и я получил ввод, который начинается с [
, поэтому я не думал, что это был правильный JSON. Я кратко посмотрел на схему JSON, но на самом деле не смог найти в ней заявления о том, что файл JSON не может начинаться [
или может начинаться только с него {
.
[]
, проанализировать ее как массив и взять первый элемент массива.)Ответы:
JSON может быть массивом или объектом. Специально от json.org:
Затем он описывает две структуры как:
Обратите внимание, что начальный и конечный символы - это фигурные и квадратные скобки соответственно.
Редактировать
И отсюда: http://www.ietf.org/rfc/rfc4627.txt
Обновление (2014)
По состоянию на март 2014 года появился новый RFC JSON ( 7159 ), который слегка изменяет определение (см. Стр. 4/5).
Определение согласно RFC 4627 было:
JSON-text = object / array
Это было изменено в RFC 7159 на:
JSON-text = ws value ws
Где
ws
представляет собой пустое пространство , иvalue
определяется следующим образом :Таким образом, ответ на вопрос все еще да, текст JSON может начинаться с квадратной скобки (то есть массива). Но в дополнение к объектам и массивам теперь это может быть также число, строка или значения
false
,null
илиtrue
.Кроме того, это изменилось по сравнению с моей предыдущей цитатой RFC 4627 (выделение добавлено):
источник
JSON-text = ws value ws
где «значение JSON ДОЛЖНО быть объектом, массивом, числом или строкой, или одно из следующих трех буквенных имен: false, null, true "в Разделе 3 (Значения). Ваш пример не удовлетворяет этим ограничениям и поэтому не является допустимым JSON.Если строка, которую вы анализируете, начинается с левой фигурной скобки ([), которую вы можете использовать,
JSONArray.parse
чтобы получить обратно объект JSONArray, а затем вы можете использовать,get(i)
где i - это индекс от 0 до возвращенного JSONArraysize()-1
.Который произвел продукцию как:
Примечание: если вы попытаетесь позвонить,
JSONObject.parse(books.toString());
вы получите сообщение об ошибке:источник
ВЕБ-САЙТ JSON.ORG ГОВОРИТ ....
https://www.json.org/
На сайте четко указано следующее:
JSON построен на двух структурах:
Коллекция пар имя / значение. На разных языках это реализовано как объект, запись, структура, словарь, хеш-таблица, список ключей или ассоциативный массив.
Упорядоченный список значений. В большинстве языков это реализовано как массив, вектор, список или последовательность.
Это универсальные структуры данных. Практически все современные языки программирования поддерживают их в той или иной форме. Имеет смысл, чтобы формат данных, который взаимозаменяем с языками программирования, также был основан на этих структурах. В JSON они принимают следующие формы:
ОБЪЕКТ:
Объект - это неупорядоченный набор пар имя / значение. Объект начинается с {(левая скобка) и заканчивается} (правая скобка). Каждое имя сопровождается: (двоеточие), а пары имя / значение разделяются, (запятая).
ARRAY:
Массив - это упорядоченная коллекция значений. Массив начинается с [(левая скобка) и заканчивается] (правая скобка). Значения разделяются, (запятая).
СТОИМОСТЬ:
Значением может быть строка в двойных кавычках, или число, или true, или false, или null, или объект или массив. Эти структуры могут быть вложенными.
STRING:
Строка - это последовательность из нуля или более символов Юникода, заключенная в двойные кавычки с использованием обратной косой черты. Символ представляется в виде отдельной символьной строки. Строка очень похожа на строку C или Java.
ЧИСЛО:
Число очень похоже на число C или Java, за исключением того, что восьмеричный и шестнадцатеричный форматы не используются.
О ПУТИ:
Пробелы могут быть вставлены между любой парой токенов. За исключением нескольких деталей кодирования, которые полностью описывают язык.
источник