Я использую узел версии 6.0.0. Я хочу проанализировать строку JSON для объекта JSON. Строка содержит массив объектов.Невозможно проанализировать массив в JSON.parse в узле
Но JSON.parse
не преобразовывает любые типы массивов вообще. Он возвращает пустой массив для всех массивов независимо от их содержимого.
EDIT: Это не просто проблема с консолью. Я сохраняю эти проанализированные данные в своей базе данных. И там также я вижу пустой массив. Никакие волшебные трюки, идущие на консоли.
UPDATE: Некоторые внешние коды нарушили определение массива. Все определения массивов теперь заканчиваются пустым массивом. Отладка причины, спасибо за все ответы.
Примеры:
contacts = '{"data": [{"p": "", "e": "", "n": "Veera Sundar"}]}' // This is my example JSON String. Rest are hit and trials.
> JSON.parse(contacts)
{ data: [] }
> a = '{"data": [{"p": ""}]}'
'{"data": [{"p": ""}]}'
> JSON.parse(a)
{ data: [] }
> a = '{"data": [1,2,3]}'
'{"data": [1,2,3]}'
> JSON.parse(a)
{ data: [] }
> a = '{"d": [1,2,3]}'
'{"d": [1,2,3]}'
> JSON.parse(a)
{ d: [] }
> a = '{"d": {"c":1}}'
'{"d": {"c":1}}'
> JSON.parse(a)
{ d: { c: 1 } } // Works for objects
> a = '{"d": {"c":[1]}}'
'{"d": {"c":[1]}}'
> JSON.parse(a)
{ d: { c: [] } }
> a = '{"d": {"c":["b","e"]}}'
'{"d": {"c":["b","e"]}}'
> JSON.parse(a)
{ d: { c: [] } }
> a = '{"d": {"c":[{"b":1}]}}'
'{"d": {"c":[{"b":1}]}}'
> JSON.parse(a)
{ d: { c: [] } }
> a = '{"d": {"c":["undefined"]}}'
'{"d": {"c":["undefined"]}}'
> JSON.parse(a)
{ d: { c: [] } }`
Не удалось за все остальное !!
Пожалуйста, дайте мне знать, что я делаю неправильно. Все эти примеры работают на обычной консоли, например: консоль Chrome.
Возможно, вы неправильно интерпретируете вывод консоли. Вы видите, что массив в '{data: []}' гиперссылках в консоли? Щелкните его, чтобы открыть его содержимое .... Не вводите в заблуждение, чтобы думать, что массив пуст. – trincot
Я просто запустил ваш код, ничего не получилось, trincot прав, возможно, это просто показывает вам вводящее в заблуждение приглашение. Вот мои результаты: > contacts = '{"data": [{"p": "", "e": "", "n": "Veera Sundar"}]}' '{"data": [ {"p": "", "e": "", "n": "Veera Sundar"}]} ' > JSON.parse (контакты) {данные: [{p:' ', e:' ' , n: 'Veera Sundar'}]} > a = '{"data": [{"p": ""}]}' '{"data": [{"p": ""}]} ' > JSON.parse (a) {data: [{p:' '}]} – akazemis
Насколько я понимаю, хром-консоль показывает полный массив, но repl не делает этого. Я проверил осмотр, и это действительно показывает значение, но это bizzare:> util.inspect (JSON.parse (контакты)) '{data: [{p: \' \ ', e: \' \ ' , п: \ 'вира Сундара \'}]}» > JSON.parse (контакты) {данные: []} > а = JSON.parse (контакты) {данные: []} > util.inspect (a) '{data: [{p: \' \ ', e: \' \ ', n: \' Veera Sundar \ '}]}' –