Mit*_*tch 1 c# json escaping visual-studio
在此标记为重复之前,具有相似名称的另一个问题与正则表达式相关,并且与我的问题不同.
我有字符串
Principal = "{\"id\":\"number\"}"
Run Code Online (Sandbox Code Playgroud)
如果我没有弄错,这应该逃避{"id":"number"}.
但是,当我将它传递给以下方法时
Dictionary<string, object> folder = new Dictionary<string, object>();
folder.Add("Principal", Principal);
string json = JsonConvert.SerializeObject(folder);
Console.WriteLine(json);
Run Code Online (Sandbox Code Playgroud)
它返回为
{
"Principal":"{\"id\":\"number\"}"
}
Run Code Online (Sandbox Code Playgroud)
理想情况下,我希望它能够回归
{
"Principal":{"id":"number"}
}
Run Code Online (Sandbox Code Playgroud)
为什么它坚持引号和转义字符?我在这做错了什么?
你的Principal是一个字符串,因此被转义为一个字符串.
如果要将其作为JSON对象转义,则它也必须是应用程序中的对象.
如果您还想反序列化它或多次使用它,我建议在类中定义您的对象.如果没有,您可以使用匿名对象:
Dictionary<string, object> folder = new Dictionary<string, object>();
folder.Add("Principal", new { id = "number" });
string json = JsonConvert.SerializeObject(folder);
Console.WriteLine(json);
Run Code Online (Sandbox Code Playgroud)
/ edit:这是一个非匿名类:
班级定义:
class Principal
{
public string id { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
用法:
Dictionary<string, object> folder = new Dictionary<string, object>();
folder.Add("Principal", new Principal(){ id = "number" });
string json = JsonConvert.SerializeObject(folder);
Console.WriteLine(json);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
366 次 |
| 最近记录: |