在这被标记为重复之前,另一个具有相似名称的问题与正则表达式相关并且与我的问题不同。
我有字符串
Principal = "{\"id\":\"number\"}"
如果我没记错的话,这应该转义为 {"id":"number"}
。
但是,当我将它传递给下面的方法时
Dictionary<string, object> folder = new Dictionary<string, object>();
folder.Add("Principal", Principal);
string json = JsonConvert.SerializeObject(folder);
Console.WriteLine(json);
它返回为
{
"Principal":"{\"id\":\"number\"}"
}
理想情况下我希望它返回
{
"Principal":{"id":"number"}
}
为什么要保留引号和转义字符?我在这里做错了什么?
最佳答案
您的 Principal 是一个字符串,因此会作为一个字符串进行转义。
如果您想将其转义为 JSON 对象,则它也需要是您应用程序中的一个对象。
如果你还想反序列化它或者多次使用它,我建议在一个类中定义你的对象。如果没有,您可以只使用匿名对象:
Dictionary<string, object> folder = new Dictionary<string, object>();
folder.Add("Principal", new { id = "number" });
string json = JsonConvert.SerializeObject(folder);
Console.WriteLine(json);
/edit:这是一个非匿名类:
类定义:
class Principal
{
public string id { get; set; }
}
用法:
Dictionary<string, object> folder = new Dictionary<string, object>();
folder.Add("Principal", new Principal(){ id = "number" });
string json = JsonConvert.SerializeObject(folder);
Console.WriteLine(json);
关于c# - 传递给字典时字符未正确转义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43239531/