2016-08-20 4 views
1

Как проверить, может ли строка типа {:[{},{}]} без каких-либо литералов быть представлена ​​как объект JSON или нет?JSON-синтаксический анализатор без литералов

Вход со следующими ограничениями: 1. Объект JSON должен начинаться с '{' и заканчивается символом '}'. 2. Ключ и значение должны быть разделены символом ':'. 3. A ',' предлагает дополнительное свойство JSON. 4. Массив состоит только из объектов JSON. Он не может содержать пару «ключ»: «значение».

И это должно быть intrepreted так:

{ 
"Key": [{ 
"Key": "Value" 
}, { 
"Key": "Value" 
}] 
} 
+0

'{}' вероятно, тоже буквально :-) – Thilo

+0

Вы хотите проверить, действительно ли ваша строка JSON (которая будет анализировать объект)? – Thilo

+0

Я имел в виду не что-то вроде '' key'', '' value', ''abc'','' 123'' и т. Д. –

ответ

2

с синтаксисом спецификации для JSON can be found here.

Это указывает на то, что [{},{}] является законным, поскольку [] должен содержать 0 или более элементов, разделенных , и {} является юридическим элементом. Однако первая часть вашего примера НЕВОЗМОЖНО: перед номером : должна быть строка. Хотя для нее является пустой пустой, для нее не является допустимым значение null, а интерпретация полностью отсутствующего элемента неоднозначна.

So. {"":[{},{}]} является законным, но {:[{},{}]} нет.

Смежные вопросы