2012-12-10 8 views
21

私はこのJSONコードを発見しました。私はそれがundefined値を利用していることに気づいた。この値の種類に関する詳細情報はどこにありますか?JSON定義されていない値のタイプ

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

あなたはJSONが有効であることを確認していますか?かっこ(MuraliPrasanthが最初に指摘する)は少なくとも疑わしいと思われる。 –

+0

これは有効なJSONではありません。カッコは使用できません。また、文字列 'undefined'もありません。 'undefined'はjavascriptの値です:http://www.ecma-international.org/ecma-262/5.1/#sec-4.3.9 –

+0

あなたは本当にJSONですか?オブジェクトリテラル(https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Working_with_Objects)のスニペットのように見えます。 –

答えて

46
  • 未定義それは JavaScriptで有効であっても、有効なJSON値ではありません。 the official json standard (ECMA-404、セクション5)から:

    A JSON値は、オブジェクト、配列、数値、文字列、TRUE、FALSE、またはNULLにすることができます。 JSONについては

  • 、代わりに未定義ヌルを使用します。{ "something": null }

+4

値を定義したくない場合は、JSONから値を完全に省略してください。そうすれば、解析後にそれを読み込もうとすると、定義されません。 – totymedli

+1

しかし、それはあなたが応答がどのように見えるべきかを完全に知っていることを前提としています。サーバーとクライアントの両方を構築しているのであれば問題ありませんが、そうでないことがよくあります。 – Ringo

+0

これは最適な解決策ではなく、何らかの理由で未定義の値を返さなければならない場合の回避策です。 – totymedli

4

undefinedそれは単に変数languageが初期化されていないか、それはまだ定義されていない可能性があることを示し特殊なタイプです。 javascript

null単に値が存在しないことを示し、それは数字と文字列の「いいえ値」を示さないようにしても使用することができるだけでなく、objects.The undefined値も値が存在しないことを表し、それはの値であります初期化されていない変数と、objectプロパティまたはarray要素が存在しない場合の値 undefinedは、定義されていない値に初期化される事前定義されたグローバル変数です。

nullundefinedTypeErrorが発生し、これらの値のプロパティまたはメソッドにアクセスするために.[]を使用して、任意のプロパティまたはmethods.Inの事実を持っていません。

+0

定義された値を変数に配置すると、未定義になりません。唯一のオプションは_undefined_値がそのプロパティに格納されているか、JSONが自動的に生成されなかったことです。 –

+0

定義されていないデータ変数へのデータ –

+0

「未定義」は、前の文全体(カンマがない場合)または「言語変数」にバインドされます。あなたは誤解されています、私は信じています。 –

関連する問題