2015-04-02 2 views
0

Я делаю некоторый сайт ползание, и прямо сейчас, я нахожу эту строку в формате JSON объектаСамый чистый способ восстановить эту строку объекта JSON в javascript?

{ "results" : [ 

    { 
     id: 775664, 
     status: "In-Stock", 
     ffmtCenterId: '10601', 
     altText: "In-Stock", 
     qty: 6 
    } 

]} 

и я wan't, чтобы преобразовать его в объект с помощью JSON.parse(), но это не работает, потому что есть синтаксические ошибки, например, вам нужны котировки вокруг значений ключа. Я пробовал eval(), но это не сработало.

Кто-нибудь знает, что это хороший способ исправить эту строку, чтобы я мог преобразовать ее в объект?

Благодаря

+4

Если это проблема, исправьте ее вручную. Если вы говорите о своем JavaScript-коде, вам следует обратиться к провайдеру веб-службы за возвращающимся словом JSON. –

+0

[This post post] (http://stackoverflow.com/questions/11784612/nodejs-any-library-to-clean-json-say-comments-when-reading-from-file) обсуждает вариант, который вы можете попробовать использовать Узел. –

+0

Фиксация его вручную не будет работать, так как многие из этих строк исправлены, поэтому мне нужен способ ее автоматизировать. – omega

ответ

1

hjson проект представляется возможным решением. Он-лайн конвертер Thier смог разобрать вашу сломанную структуру в надлежащий JSON, хотя в конверсии, похоже, есть некоторые причуды.

2

как вы попробовали eval()?

eval("var a = " + incoming_string); 
var fixed = JSON.stringify(a); 

a является объектом, я не думаю, что вам нужно, что fixed строку.

Конечно, eval неизвестная строка небезопасна.

0

Хотя я вижу, ты заметил, что вы уже нашли исправление, вот двойной replace() который работал на этом образце как многострочные строки:

var a = `{ "results" : [ 

    { 
     id: 775664, 
     status: "In-Stock", 
     ffmtCenterId: '10601', 
     altText: "In-Stock", 
     qty: 6 
    } 

]}` 

var b = a.replace(/(\w+)(:)/g, "\"$1\" $2").replace(/(:\s+)['](\w+)['](,\n)/g, "$1\"$2\"$3") 

var jo = JSON.parse(b) 

Без 2-го replace(), я получаю JSON .parse в Firebug по данным ffmtCenterId.

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