C# i=3的JavaScriptSerializer值?
C# i=3的JavaScriptSerializer值?,c#,asp.net,json,javascriptserializer,C#,Asp.net,Json,Javascriptserializer,JavaScriptSerializer应该将其参数序列化为JSON 结果是“3”(不是JSON) 我错过了什么 编辑 我给道格拉斯·克罗克福德写了封信 3不是json对象/文本,而是json值 所以我认为msdn应该澄清序列化方法 您要求它序列化值3,它成功了。那完全正确 明确地说:你到底期待什么?JSON提供名称-值对。值“3”没有名称,因为整个对象是3 JSON是JavaScript对象表示法。给它一个对象,你可能会得到你所期望的 您可以使用M.Babcock建议的匿名类型:new{i=3
JavaScriptSerializer
应该将其参数序列化为JSON
结果是“3”(不是JSON)
我错过了什么
编辑
我给道格拉斯·克罗克福德写了封信
3不是json对象/文本,而是json值
所以我认为msdn应该澄清序列化方法
您要求它序列化值3,它成功了。那完全正确
明确地说:你到底期待什么?JSON提供名称-值对。值“3”没有名称,因为整个对象是3 JSON是JavaScript对象表示法。给它一个对象,你可能会得到你所期望的
您可以使用M.Babcock建议的匿名类型:
new{i=3}
您要求它序列化值3,它成功了。那完全正确
明确地说:你到底期待什么?JSON提供名称-值对。值“3”没有名称,因为整个对象是3 JSON是JavaScript对象表示法。给它一个对象,你可能会得到你所期望的
您可以使用M.Babcock建议的匿名类型:
new{i=3}
正如不同的人多次说过的那样,您收到的输出是有效的JSON
从(导言)开始:
JSON可以表示四种基本类型(字符串、数字、布尔值和null)和两种结构化类型(对象和数组)
此外(第2.1节):
JSON值必须是对象、数组、数字或字符串,或以下三个文字名称之一:
假空真
我对规范的解释告诉我,您在这里描述的案例更多的是一个JSON值,而不是一个JSON对象。正如不同的人多次说过的那样,您收到的输出是有效的JSON 从(导言)开始: JSON可以表示四种基本类型(字符串、数字、布尔值和null)和两种结构化类型(对象和数组) 此外(第2.1节): JSON值必须是对象、数组、数字或字符串,或以下三个文字名称之一: 假空真
我对规范的解释告诉我,您在这里描述的案例更多的是一个JSON值,而不是一个JSON对象。关于
string sJSON=oSerializer.Serialize(new{i=3})如何代码>?@M.Babcock这是匿名类型。这不是我问的。为什么我的示例不返回jSon对象?(事件i我向他发送了一个对象)JavaScriptSerializer希望使用它正在序列化的对象的属性和字段。整数两者都没有。唯一的值实际上是JSON。有效的JSON可以是对象、数组或值。转到一个现代浏览器,给它JSON.parse(“3”)
,你会得到数字3。@MattGreer JsonLint sais“3”不是有效的JSON。我不相信关于字符串sJSON=oSerializer.Serialize(新的{I=3})的内容代码>?@M.Babcock这是匿名类型。这不是我问的。为什么我的示例不返回jSon对象?(事件i我向他发送了一个对象)JavaScriptSerializer希望使用它正在序列化的对象的属性和字段。整数两者都没有。唯一的值实际上是JSON。有效的JSON可以是对象、数组或值。转到一个现代浏览器,给它JSON.parse(“3”)
,你会得到数字3。@MattGreer JsonLint sais“3”不是有效的JSON。我真不敢相信你到底想出来什么?如果我给他传递了一个非对象的东西——他无法实现其主要目标——解析为JSON——那么就进入例外。整数值3
是一个对象,它的JSON表示是字符串3
。我理解这一点。但是jsonLint说3是无效的jsonLook Royi,你问了这个问题,很多人现在都给了你同样的,正确的答案。如果你不喜欢这个答案,可以问另一个问题。@KierenJohnstone 3不是一个对象。也许道格拉斯错了。。。。我不这么认为。你到底想出来什么?如果我给他传递了一个非对象的东西——他无法实现其主要目标——解析为JSON——那么就进入例外。整数值3
是一个对象,它的JSON表示是字符串3
。我理解这一点。但是jsonLint说3是无效的jsonLook Royi,你问了这个问题,很多人现在都给了你同样的,正确的答案。如果你不喜欢这个答案,可以问另一个问题。@KierenJohnstone 3不是一个对象。也许道格拉斯错了。。。。我不这么认为。3不是一个json对象,而是一个正确的值。Serialize()应该获取一个对象并将其转换为pair值。它没有。将值3传递给oSerializer.Serialize
不会为序列化程序提供足够的信息来生成键/值对,因此期望它这样做是不合理的。JSON的目标是提供一种表示值的方法,这些值可以在Javascript中使用,在Javascript中我可以使用'var I=3;'这不是一个对象,也不是一对键/值。很抱歉,这个愚蠢的问题让你发疯了,但它让我心烦意乱:)我甚至给cirk douglas写了一封邮件,想得到答案。我非常清楚json是什么。但是msdn说serialize方法:将对象转换为JSON字符串。
所以。。。3不是Json字符串,而是Json值。我想他应该破例说:“不给我提供班级结构”对不起。最后一句话是为了基伦的第一句话。3不是一个json对象,而是一个正确的值。Serialize()应该获取一个对象并将其转换为pair值。它没有。将值3传递给oSerializer.Serialize
不会为序列化程序提供足够的信息来生成键/值对,因此期望它这样做是不合理的。JSON的目标是提供一种表示值的方法
JavaScriptSerializer oSerializer = new JavaScriptSerializer();
object i = 3;
string sJSON = oSerializer.Serialize(i); //"3"