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

    ]

}

Używam

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

A to może analizować plik JSON bez " " wokół właściwości.

Ale dla JSON.parse(xmlhttp.responseText)

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

    ]

}

Właściwości JSON muszą być otoczone przez " ". Czy istnieje sposób, aby to zrobić bez " "?

0
Tin Amaranth 4 grudzień 2011, 17:06

4 odpowiedzi

Najlepsza odpowiedź

Nie, nie ma wokół niego.

Bez cytatów wokół nieruchomości nie jest ważny JSON. Pierwszym przykładem jest literał obiektów JavaScript.

4
circusbred 4 grudzień 2011, 13:08

Nie mając cytatów wokół właściwości, JSON nie jest już ważny. Robiąc to tylko spowodować problemy.

2
Declan Cook 4 grudzień 2011, 13:12

JSON jest formatem danych, który jest wyrażony jako podzbiór JavaScript.

Specyfikacja JSON wymaga wyrażania nazw nieruchomości jako ciągów (które muszą być cytowane). JavaScript Obiekt Literal Składnia daje również możliwość korzystania z identyfikatorów.

eval może obsługiwać nazwy właściwości jako identyfikatorów, ponieważ ta składnia jest dozwolona w JavaScript, a {X1}} Oceniają kod jako JavaScript. JSON.parse Z drugiej strony oczekuje, że prawdziwy JSON i to jest to, co musisz je dać.

Cytaty są wymagane, trzymaj je.

2
Quentin 4 grudzień 2011, 13:15

eval jest zła. Sprawdź To do czytania. Używasz jednak JSON.parse, który wymaga nowszej wersji przeglądarki lub skryptu {x2}}.

Ale w moich preferencjach lubię używać, jak jQuery deserializuje JSON do obiektu za pomocą new Function(). Rozważ ten kod:

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

Działałoby to z i bez ":)

1
Abdul Munim 4 grudzień 2011, 14:07