【发布时间】:2016-04-22 18:39:06
【问题描述】:
我有一个 json 字符串,其中包含一个字符串文字作为对象之一的值 - PostData。
string json = "{\"PostData\": '{\"LastName\": \"O Corner\",\"FirstName\":\"Mark\",\"Address\":\"123 James St\"}'}";
我正在尝试使用以下方法反序列化 json:
var obj = JsonConvert.DeserializeObject<dynamic>(json);
然后,我可以使用 PostData 的 json 字符串值,例如:
obj["PostData"].ToString()
但是,一旦我得到带有单引号的数据,例如:
string json = "{\"PostData\": '{\"LastName\": \"O' Corner\",\"FirstName\":\"Mark\",\"Address\":\"123 James St\"}'}";
我在反序列化时遇到异常。如何转义单引号?
我已经检查过类似的问题,但没有得到任何工作。我还尝试了他的thread 中提到的解决方案之一:
JsonSerializerSettings settings = new JsonSerializerSettings
{
StringEscapeHandling = StringEscapeHandling.EscapeHtml
};
JsonConvert.SerializeObject(obj, settings);
但是,我得到 Newtonsoft 不包含 StringEscapeHandling 的定义。
另外,尝试用\ 转义字符串中的单引号:
'{\"LastName\": \"O\' Corner\",\"FirstName\":\"Mark\",\"Address\":\"123 James St\"}' 也不起作用。
【问题讨论】:
-
我认为最好的选择是首先仔细序列化您的对象。使用的是哪个 Newtonsoft.Json 版本?
StringEscapeHandling.EscapeHtml存在于最新的8.0.3版本中并且工作正常。
标签: c# json json.net deserialization