JSON: JS анализирует внешний JSON-файл (можно ли удалить кавычки?) - PullRequest
0 голосов
/ 04 декабря 2011
{
    name: "Tesla",
    gender: "Male",
    info: {age: 88, interest: "Science"},
    x: 
    [
        {y: 1},{y: 2}

    ]

}

Я использую

var jsonData = eval("("+xmlhttp.responseText+")");

и это может проанализировать файл JSON без " " вокруг свойств.

Но для JSON.parse(xmlhttp.responseText)

{
    "name": "Tesla",
    "gender": "Male",
    "info": {"age": 88, "interest": "Science"},
    "x": 
    [
        {"y": 1},{"y": 2}

    ]

}

Свойства JSON должны быть окружены " ". Есть ли способ сделать это без " "?

Ответы [ 4 ]

4 голосов
/ 04 декабря 2011

Нет, пути назад нет.

Без кавычек вокруг свойств, это не допустимый JSON. Первый пример - литерал объекта JavaScript.

2 голосов
/ 04 декабря 2011

JSON - это формат данных, который выражается как подмножество JavaScript.

Спецификация JSON требует, чтобы имена свойств выражались в виде строк (которые должны быть заключены в кавычки). Литеральный синтаксис объекта JavaScript также позволяет использовать идентификаторы.

eval может обрабатывать имена ваших свойств как идентификаторы, поскольку этот синтаксис разрешен в JavaScript, а eval оценивает код как JavaScript. JSON.parse, с другой стороны, ожидает настоящий JSON, и это то, что вы должны ему дать.

Требуются кавычки, держите их.

2 голосов
/ 04 декабря 2011

Из-за отсутствия кавычек вокруг свойств ваш JSON больше не действителен. Это только вызовет у вас проблемы.

1 голос
/ 04 декабря 2011

eval это зло. Проверьте это на чтение. Однако вы используете JSON.parse, для которого требуется более новая версия вашего браузера ИЛИ json2.js скрипт.

Но я предпочитаю использовать то, как jQuery десериализует JSON в объект, используя new Function(). Рассмотрим этот код:

var jsonData = new Function('return ' + xmlhttp.responseText)();

Это будет работать с и без "":)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...