C# 反序列化C中具有多个特殊字符的json字符串#
以下是我的json字符串:C# 反序列化C中具有多个特殊字符的json字符串#,c#,json,deserialization,C#,Json,Deserialization,以下是我的json字符串: [ {"Sname":"wordpress_Site_Url","Settings":"http://www.mywebsite.com","lab":false}, {"Sname":"wordpress_template","Settings":"[vc_row][vc_column width="2/3"][vc_column_text] {{{description}}} [/vc_column_tex
[
{"Sname":"wordpress_Site_Url","Settings":"http://www.mywebsite.com","lab":false},
{"Sname":"wordpress_template","Settings":"[vc_row][vc_column width="2/3"][vc_column_text] {{{description}}} [/vc_column_text][/vc_column][vc_column width="1/3" css=".vc_custom_1438623014033{border-color: #dbead5 !important;}"] [gravityform id="14" title="false" description="false" ajax="true" field_values="downloadFileID={{downloadURL}}"][/vc_column][/vc_row][vc_row][vc_column][vc_column_text] [/vc_column_text][/vc_column][/vc_row]","lab":true,"selected":false},
{"Sname":"dummy","Settings":"abc","lab":false},
{"Sname":"testing","Settings":"ssds","lab":false}
]
我想编写一个函数,将上面json中的keySname
作为参数,并从这个json字符串返回上面json中的值Setting
转义没有帮助,在反序列化之前,在将JSON保存到数据库之前,需要序列化JSON字符串。
您可以轻松地反序列化JSON。如果您对设置对象的序列化方式有影响,我建议您正确地序列化它。否则你就得做些可怕的事情才能让它发挥作用。比如:
class MyResultClass
{
public string Sname { get; set; }
public string Settings { get; set; }
}
private MyResultClass Convert(string str)
{
var newStr = str.Replace("\"Settings\"", "VERYUNIQUEKEYWORD")
.Replace("\"Sname\"", "ANOTHERKEYWORD")
.Replace("\"", "QUOTE")
.Replace("VERYUNIQUEKEYWORD", "\"Settings\"")
.Replace("ANOTHERKEYWORD","\"Sname\"")
.Replace(":QUOTE",":\"")
.Replace("QUOTE,","\",");
var myObj = JsonConvert.DeserializeObject<MyResultClass>(newStr);
myObj.Settings = myObj.Settings.Replace("QUOTE", "\"");
return myObj;
}
类MyResultClass
{
公共字符串Sname{get;set;}
公共字符串设置{get;set;}
}
私有MyResultClass转换(字符串str)
{
var newStr=str.Replace(“设置”和“VERYUNIQUEKEYWORD”)
.Replace(“\”Sname\”,“另一个关键字”)
.替换(“\”,“引号”)
.Replace(“VERYUNIQUEKEYWORD”,“Settings\”)
.Replace(“另一个关键字”,“Sname\”)
.Replace(“:QUOTE”,“:\”)
.替换(“引号,”、“\”、”;
var myObj=JsonConvert.DeserializeObject(newStr);
myObj.Settings=myObj.Settings.Replace(“引号”和“\”);
返回myObj;
}
请注意,这不是我的建议 从您阅读此JSON的位置,我已将其作为字符串保存在我的数据库中。此JSON无效!验证您的Json实际的问题是在我的Json中,模板保存为关键字“wordpress_template”的值。我已经在为此使用临时解决方案。。它将替换关键字“wordpress\u template”的设置:“”,然后反序列化完美工作。我正试图找到一个永久的解决方案,因为我需要在很多地方使用它。为什么要序列化JSON字符串?要获取字符串?@SirRufo因为此JSON在字符串中包含双引号,所以需要使用斜杠双引号存储。这就是原因,JSON无效你的意思是像\“-这样的反斜杠双引号-为什么你不在回答中写这个?序列化JSON字符串不会使sense@SirRufo是反斜杠,序列化JSON自动添加所需的反斜杠,无需手动操作。希望您删除您的反对票。@SirRufo谢谢,朋友