Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/37.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/string/5.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
json的转义字符串导致asp.net服务器端操作_Asp.net_String_Json_Serverside Javascript_Jsonserializer - Fatal编程技术网

json的转义字符串导致asp.net服务器端操作

json的转义字符串导致asp.net服务器端操作,asp.net,string,json,serverside-javascript,jsonserializer,Asp.net,String,Json,Serverside Javascript,Jsonserializer,我有一个服务器端操作,手动生成一些json响应。json中有一个包含字符串值的属性 转义此json结果中包含的字符串值的最简单方法是什么 那么这个 string result = "{ \"propName\" : '" + (" *** \\\"Hello World!\\\" ***") + "' }"; 会变成 string result = "{ \"propName\" : '" + SomeJsonConverter.EscapeString(" *** \\\"Hello Wor

我有一个服务器端操作,手动生成一些json响应。json中有一个包含字符串值的属性

转义此json结果中包含的字符串值的最简单方法是什么

那么这个

string result = "{ \"propName\" : '" + (" *** \\\"Hello World!\\\" ***") + "' }";
会变成

string result = "{ \"propName\" : '" + SomeJsonConverter.EscapeString(" *** \\\"Hello World!\\\" ***") + "' }";
并生成以下json

{ \"propName\" : '*** \"Hello World!\" ***' }

首先,我发现手动实现序列化的想法并不好。您应该只为学习目的而这样做,或者您有其他非常重要的原因无法使用标准.NET类(例如,use必须使用.NET 1.0-3.0,而不是更高版本)

现在回到你的代码。您当前生成的结果不是JSON格式。应将属性名称和属性值置于双配额中:

{ "propName" : "*** \"Hello World!\" ***" }
如何在双配额上读取必须转义的字符。反斜杠字符也必须转义。您可以在上验证JSON结果

如果您也手动实现反序列化,您应该知道有更多的字符可以被转义到
\“
\
\/
,\b、\f、\n、\r、\t和\u,紧跟在4个十六进制数字之后


我在回答的开头写道,最好使用标准的.NET类,如或。如果必须使用.NET 2.0而不是更高版本,则可以使用。

您可以尝试以下方法:

string.replace(/(\\|")/g, "\\$1").replace("\n", "\\n").replace("\r", "\\r");

感谢您的回复。我可能只需要使用内置的序列化。最初不这样做的原因是需要实现大量额外的代码,当时似乎有些过分。字符串串联(在本例中)注意:我根据您在回答中对属性名称的反馈(好的一点)编辑了这个问题,指向JavaScriptSerializer的链接不是working@JasonJarrett:谢谢,链接已经修复。