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

应该将JavaScriptSerializer其参数序列化为 JSON!

结果是“3”(不是JSON)

我错过了什么?

编辑

我给道格拉斯·克罗克福德写了一封邮件

3 不是 json 对象/文本,而是 json 值。

所以我认为msdn应该澄清序列化方法。

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

4

2 回答 2

2

正如不同人多次说过的那样,您收到的输出是有效的 JSON。

来自JSON 规范(简介):

JSON 可以表示四种基本类型(字符串、数字、布尔值和 null)和两种结构化类型(对象和数组)。

以及进一步(第 2.1 节):

JSON 值必须是对象、数组、数字或字符串,或以下三个文字名称之一:

假空真

我对规范的解释告诉我,您在此处描述的情况更多是 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 回答