51

JSON番号を引用符で囲むことはできますか?ほとんどの検索リンクでは、数字は引用符を「必要としない」ようです。しかし、パーサーはとの両方"attr" : 6を受け入れる必要があり"attr" : "6"ますか?

キーが与えられた番号を取得するMyParserメソッドがある場合、両方の場合に戻るか、後者の場合に例外をスローする必要がありますか?getIntMyParser.getInt("attr")6

4

3 に答える 3

88

JSONでは、6は6番目です。数字"6"を含む文字列です。では、 「json番号を引用できますか?」という質問に対する答えです。基本的には「いいえ」です。引用符で囲むと、数字ではなくなるためです。 6

しかし、パーサーはとの両方"attr" : 6を受け入れる必要があり"attr" : "6"ますか?

はい、しかしそれらは異なるものを定義します。1つ目は、値(数値)を使用してattrプロパティを定義します。2つ目は、値(1桁の数字を含む文字列)を使用6してプロパティを定義します。attr"6"

(最初に尋ねられた質問attr: "6"ですが、JSONではプロパティ名を二重引用符で囲む必要があるため無効です。)

MyParserにキーを指定して数値を取得するメソッドgetIntがある場合、MyParser.getInt( "attr")は両方の場合に6を返すか、後者の場合に例外をスローする必要がありますか?

これは、パーサーを提供する人の設計上の決定であり、基本的には、getInt厳密(試してみると例外をスローする"attr": "6")または緩い(強制"6"6て返す)のどちらかを選択します。JavaScriptは通常緩いので、緩いという議論があるかもしれません。逆に、JavaScriptが緩いという事実は、問題を引き起こすことがあります。これは、厳密であるという議論になる可能性があります。

于 2013-03-12T17:40:11.747 に答える
3

プログラミング言語が文字列からintへの暗黙の変換を提供しない場合、問題が発生する可能性があるため、整数を取得するために使用する言語によって異なります。

最近のプログラミング言語では、追加のコードなしで文字列を数値に暗黙的に変換できるため、あまり心配する必要はありません。JavaScriptのようなプログラミング言語を使用する場合、使用する場合、==および===値を比較する場合、考慮すべきことは===、値のタイプを考慮し==、そうでない場合は、6 === "6"を返しfalse6 == "6"はを返しtrueます。

あなたの質問に答えると、文字列から整数への暗黙の変換を提供するプログラミング言語を使用している場合、例外はスローされません。

于 2013-03-12T17:50:14.157 に答える
-2

あなたは数を引用することができます。両方とも有効です( "attr":6および "attr": "6")値を抽出するときは、最初のケースでGetInt()を使用し、2番目のケースでGetString()を使用する必要があることを覚えておく必要があります。その文字列を整数に変換します。

于 2018-04-13T22:03:30.217 に答える