Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/289.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# i=3的JavaScriptSerializer值?_C#_Asp.net_Json_Javascriptserializer - Fatal编程技术网

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"