a = "{key:'14',data:{order: '154'}}"
JSON.parse(a)
ожидаемого поведения:JSON.parse не разобрать JSON
{key:'14',data:{order: '154'}}
результат:
SyntaxError: unexpected tIDENTIFIER, expecting end-of-input
a = "{key:'14',data:{order: '154'}}"
JSON.parse(a)
ожидаемого поведения:JSON.parse не разобрать JSON
{key:'14',data:{order: '154'}}
результат:
SyntaxError: unexpected tIDENTIFIER, expecting end-of-input
Вашего JSON не является действительным.
Вы должны попробовать:
a = '{"key":"14","data":{"order": "154"}}'
JSON.parse(a)
Действительно JSON требует как свойство и значения должны быть заключены в двойные кавычки.
избил меня! Google для онлайн-валидатора, подобного этому: http://codebeautify.org/jsonvalidate, и это может помочь. – user1269942
Свойства и * строка * значения. 'null ',' true', 'false' и числовые значения не должны указываться (если вы не хотите, чтобы строка содержала это содержимое). – Amadan
Недопустимые ключи Json, Json всегда в кавычках, чтобы они были действительными.
Это не 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"}}
Недействительный JSON (хотя он будет действителен JavaScript). Ключи должны быть двойными кавычками, а значения также двойными, а не одиночными. Подтвердите его по адресу http://jsonlint.com/ –
@michael, если значение является числом, оно может быть без кавычек – loneshark99
@ loneshark99 Но ни в коем случае не одинарные кавычки. – user2864740