Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/281.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# 反序列化C中具有多个特殊字符的json字符串#_C#_Json_Deserialization - Fatal编程技术网

C# 反序列化C中具有多个特殊字符的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

以下是我的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_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中的key
Sname
作为参数,并从这个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谢谢,朋友