JavaScriptSerializer oSerializer = new JavaScriptSerializer();
object i = 3;
string sJSON = oSerializer.Serialize(i); //"3"
JavaScriptSerializer
应将其参数序列化为JSON!
结果是“3”(不是 JSON)
我错过了什么?
我写了一封邮件给douglas crockford
3不是json对象/文本,而是json值。
所以我认为msdn应该澄清序列化方法。
答案 0 :(得分:2)
正如不同人多次说过的那样,您收到的输出是有效的JSON。
来自JSON Specification(简介):
JSON可以表示四种基本类型(字符串,数字,布尔值和null)和两种结构化类型(对象和数组)。
以及(第2.1节):
JSON值必须是对象,数组,数字或字符串,或以下三个文字名称之一:
false null true
我对规范的解释告诉我,你在这里描述的案例比JSON 对象更像是一个JSON 值。
答案 1 :(得分:1)
你要求它序列化值3,它确实如此。这是完全正确的。
要明确:你到底想要什么? JSON提供名称 - 值对。值“3”没有名称,因为整个对象是3。
JSON是JavaScript 对象表示法。把它传递给一个物体,你可能会得到你期望的东西。
您可以使用匿名类型,如M. Babcock建议:new { i = 3 }
。