2012-12-10 13 views
21

natknąłem się na ten kod JSON. Zauważyłem, że korzysta z wartości undefined. Gdzie mogę znaleźć więcej informacji na temat tego typu wartości?JSON typ wartość niezdefiniowana

tracks:[ 
    (  { 
     codec:"h264", 
     language:undefined, 
     id:1, 
     bitrate:785236, 
     content:"video" 
    }  ), 
    (  { 
     codec:"aac", 
     language:undefined, 
     id:2, 
     bitrate:75969, 
     content:"audio" 
    }  ) 
    ], 
+2

Czy jesteś pewien, że JSON jest ważny? Nawiasy (po raz pierwszy odnotowane przez MuraliPrasantha) wyglądają przynajmniej podejrzanie. –

+0

To nie jest prawidłowy JSON. Nawiasy są niedozwolone. Nie jest również dosłowne "niezdefiniowane". 'Undefined' jest wartością w javascript: http://www.ecma-international.org/ecma-262/5.1/#sec-4.3.9 –

+0

jesteś pewien, że to JSON? Wygląda jak fragment w [object dosłowny] (https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Working_with_Objects) też mnie. –

Odpowiedz

46
  • niezdefiniowany nie jest prawidłową wartością json, mimo że jest on ważny w javascript. Od the official json standard (ECMA-404, pkt 5):

    Wartość JSON może być przedmiotem, tablica, liczba, ciąg, true, false lub null.

  • Dla json, należy zerowy zamiast niezdefiniowany: { "something": null }

+4

Jeśli chcesz wartość jako niezdefiniowany, po prostu pominąć go w całości z JSON. W ten sposób, gdy spróbujesz go odczytać po analizie, nie będzie zdefiniowane. – totymedli

+1

Ale to zakłada, że ​​masz pełną wiedzę o tym, jak powinna wyglądać odpowiedź. Co jest w porządku, jeśli budujesz zarówno serwer, jak i klienta, ale często tak nie jest. – Ringo

+0

Pewnie. To nie jest optymalne rozwiązanie, tylko obejście, kiedy (z jakiegokolwiek powodu) musisz zwrócić nieokreśloną wartość. – totymedli

4

undefined jest szczególnym rodzajem gdzie to po prostu oznacza, że ​​zmienna language nie jest zainicjowany lub może być to nie jest jeszcze określona.

null w javascript wskazuje po prostu braku wartości i można je także wykorzystać do określenia wartości „nie” do liczby i łańcuchów oraz objects.The undefined Wartość ta oznacza również brak wartości, to jest wartości z zmienne, które nie zostały zainicjowane i wartość, gdy pojawi się od object mienia lub array elementu, który nie istnieje undefined jest predefiniowaną zmienną globalną, która jest inicjowana do wartości nieokreślone.

null i undefined nie posiada żadnych właściwości lub methods.In fakt, używając . lub [] dostęp do właściwości lub metody z tych wartości powoduje TypeError.

+0

Umieszczenie zdefiniowanej wartości w zmiennej powoduje, że nie jest ona niezdefiniowana. Jedyną opcją jest to, że wartość _undefined_ została zapisana w tej właściwości lub że ten JSON nie został wygenerowany automatycznie. –

+0

Zmienna danych na język, która jest nieokreślona –

+0

w sensie językowym, "która jest niezdefiniowana" wiąże się z całym poprzednim zdaniem (jeśli brakuje przecinka) lub "zmienną języka", a nie "danymi" (co jest dalej). Jesteś, jak sądzę, źle zrozumiany. –

Powiązane problemy