2015-12-25 2 views
-1
a = "{key:'14',data:{order: '154'}}" 

JSON.parse(a) 

ожидаемого поведения:JSON.parse не разобрать JSON

{key:'14',data:{order: '154'}} 

результат:

SyntaxError: unexpected tIDENTIFIER, expecting end-of-input 
+9

Недействительный JSON (хотя он будет действителен JavaScript). Ключи должны быть двойными кавычками, а значения также двойными, а не одиночными. Подтвердите его по адресу http://jsonlint.com/ –

+0

@michael, если значение является числом, оно может быть без кавычек – loneshark99

+1

@ loneshark99 Но ни в коем случае не одинарные кавычки. – user2864740

ответ

4

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

Вы должны попробовать:

a = '{"key":"14","data":{"order": "154"}}' 

JSON.parse(a) 

Действительно JSON требует как свойство и значения должны быть заключены в двойные кавычки.

+1

избил меня! Google для онлайн-валидатора, подобного этому: http://codebeautify.org/jsonvalidate, и это может помочь. – user1269942

+1

Свойства и * строка * значения. 'null ',' true', 'false' и числовые значения не должны указываться (если вы не хотите, чтобы строка содержала это содержимое). – Amadan

0

Недопустимые ключи Json, Json всегда в кавычках, чтобы они были действительными.

0

Это не JSON. Ваш хэш сохраняется как string не JSON. так что вам нужно eval для ожидаемого результата:

> a = "{key:'14',data:{order: '154'}}" 
> eval(a) 
#=> {:key=>"14", :data=>{:order=>"154"}} 

Позвольте мне преобразовать хэш JSON и показать вам, как он выглядит и как можно разобрать JSON.

# sample of your hash 
> hash = {key:'14',data:{order: '154'}} 

# convert hash to json and assign it to a 
> a = hash.to_json 
#=> "{\"key\":\"14\",\"data\":{\"order\":\"154\"}}" 

# parse correct JSON format 
> JSON.parse(a) 
#=> {"key"=>"14", "data"=>{"order"=>"154"}} 
Смежные вопросы