2017-09-21 26 views
1

以下のコードでは、中括弧をjsonのまわりで出力しないのはなぜですか?私はJSONが常に括弧の中にカプセル化されていると思った。JSLEに中括弧が追加されないのはなぜですか?

var json = JsonConvert.SerializeObject("some text into json", Formatting.Indented);` 

結果のJSONを使用すると、単純に文字列をシリアライズので、これは今"\"some text into json\""むしろ{ "\"some text into json\"" }

+0

なぜdownvotesですか?これは基本的だが、完全に明確な質問です! – Spontifixus

+0

私は質問を改善するチャンスを与えるコメントなしでdownvotesとは何ですか?私はそれを膨らませる理由がないので、質問は意図的に非常に簡単です。 –

+0

それは@Filburtの1つの理由かもしれないと思いますが、それをコードに変更します。 –

答えて

5

を超えています。このようにJSONに、引用符で囲まれた単なる文字列である、ちょうどシリアライズされた文字列、シリアライザリターン:

"some text" 

オブジェクトをシリアライズ場合JSONだけ中括弧を追加します。

{ 
    "someStringProperty": "some text" 
} 

はまたことに注意してくださいVisual Studioの出力のバックスラッシュは、文字列全体を再度引用符で囲み、文字列内の引用符をエスケープします。シリアライズされた文字列の「実際の」値は単純な引用符を使用します。

"\"some text\"" 

または

"{ \"someStringProperty\": \"some text\" }" 
0

JSONスタンド「JavaScriptのオブジェクト表記」のために、すべてのデータを単一のJavaScriptオブジェクトとして表現されていることを意味する(文字列を次のようにこのようにVisual Studioは、上記のJSON文字列を表示していましたオブジェクトのJavaScriptコードのように見えますが、より正確なものです)。

これは、中括弧が必須ではないため、複雑なオブジェクト構造を表すために必要なものです。 { "some text into json" }(わかりやすくするために引用符を省略しています)は、JavaScriptコンパイラの構文エラーです。 { "key": "value", "other key": "other value" }オブジェクトを持つことはできますが、値のないキーはエラーです。

したがって、"some text into json"は、文字列オブジェクト"some text into json"に対して唯一可能な正しいJSONです。

関連する問題