2016-03-22 7 views
-1

Я пытаюсь создать JSON и заполнить его некоторыми данными. Данные немного сложны, поэтому я хотел бы иметь его «заголовок», «имя» и «значение».Не удается проанализировать данные из JSON

Моя проблема заключается в том, что я не могу получить содержимое из созданного мной JSON и получить сообщение об ошибке «Невнимание SyntaxError: Неожиданный токен o». Однако, если я просто передаю json-переменную в console.log(), я могу увидеть все объекты, содержащиеся в переменной.

Пожалуйста, смотрите код ниже:

JSON

var json = [ 
    {"title":"rice", 
     "value":{ 
      "carb": 44.5, 
      "fat": 0.1, 
      "cal": 205, 
      "prot": 4.3 
     } 
    }, 
    {"title":"buckwheat", 
     "value":{ 
      "carb": 20, 
      "fat": 1, 
      "cal": 92, 
      "prot": 3 
     } 
    }, 
    {"title":"potato", 
     "value":{ 
      "carb": 50.5, 
      "fat": 0.5, 
      "cal": 225, 
      "prot": 5.9 
     }, 
    } 
] 

JS

var obj = JSON.parse(json); 
console.log(obj[0].title); 
+1

'JSON.parse' должен быть вызван, чтобы превратить строковое представление объекта json в фактический объект javascript. Переменная 'json' уже является объектом javascript. –

+1

У вас нет JSON в вашем вопросе. Просто используйте 'console.log (json [0] .title);' не пытаясь сначала его разобрать (хотя я рекомендую также переименовать вашу переменную, так как имя 'json' вводит в заблуждение). – Paulpro

+0

У вас также есть посторонняя запятая после объект значения внутри объекта с заголовком «картофель». – LinuxDisciple

ответ

0

Ваши данные JSON не является действительным.

Valid Example

Вы можете нажать f12 в Chrome или Mozilla и посмотрите консоль. Вы можете найти, что не так с вашим JS-кодом.

[ 
    { 
    "title": "rice", 
    "value": { 
     "carb": 20, 
     "fat": 1, 
     "cal": 92, 
     "prot": 3 
    } 
    }, 
    { 
    "title": "buckwheat", 
    "value": { 
     "carb": 20, 
     "fat": 1, 
     "cal": 92, 
     "prot": 3 
    } 
    }, 
    { 
    "title": "potato", 
    "value": { 
     "carb": 50.5, 
     "fat": 0.5, 
     "cal": 225, 
     "prot": 5.9 
    } 
    } 
] 
+0

Спасибо за ответ. Я просто не понял, как получить данные без переменной. –

1

Может быть, я не понимаю ваш вопрос, но

JSON.parse() 

В качестве первого параметра принимает некоторые строки, текстовое значение, новообращенных и возвращает его в качестве объекта JSON. Поскольку у вас есть одно - вы можете заполнить его своими данными.

0

Ваш var "json" уже является объектом javascript. Просто добавьте точку с запятой к нему и исправить одну ошибку (запятую после "prot": 5.9}):

var obj = [ 
    {"title":"rice", 
     "value":{ 
      "carb": 44.5, 
      "fat": 0.1, 
      "cal": 205, 
      "prot": 4.3 
     } 
    }, 
    {"title":"buckwheat", 
     "value":{ 
      "carb": 20, 
      "fat": 1, 
      "cal": 92, 
      "prot": 3 
     } 
    }, 
    {"title":"potato", 
     "value":{ 
      "carb": 50.5, 
      "fat": 0.5, 
      "cal": 225, 
      "prot": 5.9 
     } 
    } ]; 

Вы можете просто получить значения с:

console.log(obj[0].title); 

Если вы хотите, чтобы разобрать JSON, сохранять данные в строковый формат.

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