C#Newsoft.Json反序列化失败,嵌套"

时间:2014-11-26 07:09:00

标签: c# json serialization escaping

我通过HTTP请求从Web服务获取一些数据,如下所示:

{
    ...
    "status" : "some_status",
    ...
}

返回的字段由\转义的字符(即\"status\" : \"some_status\")返回,我使用Newsoft.Json将返回的数据反序列化为(自定义)对象。问题是,当"some_status"本身包含"时:

{
    ...
    "status" : "some_status "hello world"",
    ...
}

再次,每个"转义为\",反序列化失败并显示unexpected character

如何指定使用Newsoft.Json完全忽略或删除内部"?或者,如果不可能,可以使用Regex

感谢。

2 个答案:

答案 0 :(得分:2)

没有JSON解析器能够处理首先没有正确格式化的JSON字符串。

所以你需要确保你的theModel格式正确且符合JSON.org标准。

答案 1 :(得分:0)

您的JSON字符串不正确。双引号之间的字符串不能包含其他双引号。 如果它很有用,您可以使用在线编辑器测试您的JSON字符串:http://www.jsoneditoronline.org/

你不能删除双引号,否则你的结果不再被视为字符串而是int。

我不知道你是如何管理你的网络摄像头并使用反斜杠的,但通常你应该有这样的东西:

WebClient client = new WebClient();
Stream stream = client.OpenRead("http://.....");
StreamReader reader = new StreamReader(stream);
object obj = Newtonsoft.Json.JsonConvert.DeserializeObject<object>`(reader.Read().ToString());

object是要反序列化的对象的类型