0
JavaScriptSerializer oSerializer = new JavaScriptSerializer();
object i = 3;
string sJSON =  oSerializer.Serialize(i); //"3"

The JavaScriptSerializer should serialize its parameter to JSON!

And the result is "3" ( which is not JSON)

What am I missing?

edit

Ive written a mail to douglas crockford

3 is not a json object/text but json value.

so i think msdn should clarify the serialize method.

http://i.stack.imgur.com/VOh3X.png

4

2 に答える 2

2

さまざまな人が何度も言っているように、受け取っている出力は有効な JSON です。

JSON 仕様(イントロダクション)から:

JSON は、4 つのプリミティブ型 (文字列、数値、ブール値、および null) と 2 つの構造化型 (オブジェクトと配列) を表すことができます。

さらに (セクション 2.1):

JSON 値は、オブジェクト、配列、数値、文字列、または次の 3 つのリテラル名のいずれかでなければなりません。

false null tr​​ue

仕様の私の解釈は、ここで説明するケースは、JSONオブジェクトよりも JSONであると教えてくれます。

于 2012-01-07T17:11:58.400 に答える
1

値3をシリアル化するように要求しましたが、実行しました。それは正確に正しいです。

明確に言うと、あなたは正確に何を期待していますか?JSONは名前と値のペアを提供します。オブジェクト全体が3であるため、値「3」には名前がありません。

JSONはJavaScriptオブジェクト表記です。オブジェクトを渡すと、おそらく期待どおりの結果が得られます。

M. Babcockが提案するように、匿名タイプを使用できますnew { i = 3 }

于 2012-01-07T16:20:56.580 に答える