将具有特殊字符的Json反序列化为字典

时间:2019-07-19 09:11:15

标签: c# json json.net

使用Newtonsoft json.net将json字符串反序列化为字典时,我遇到了一个问题。这是我的json字符串具有某些特殊字符的情况。

string jsonString = "{\"name\":\"Jones Smith\",\"age\":\"20\",\"description\":\"The one live with \"ALIGATOR\"\"}";
Dictionary<string, object> dict = JsonConvert.DeserializeObject<Dictionary<string, object>>(jsonString);

我尝试找到使用json.net的解决方案,但未找到。因此,最终计划是删除该“字符”。那么,这种情况下最好的解决方案是什么?

2 个答案:

答案 0 :(得分:1)

我认为,除了更改原始格式之外,您在您的情况下不能做很多事情。您输入的问题是,"字符一次直接在json中转义一次,而一次在json值中转义。

请考虑以下部分:"description":"The one live with "ALIGATOR"" 反序列化器应该如何知道应该将哪个"视为值的一部分或json格式的一部分?

答案 1 :(得分:0)

我得到了答案,就像最后一条评论一样,那是无效的JSON,下面是有效的JSON

{"name":"Jones Smith","age":"20","description":"The one live with \"ALIGATOR\""}

如果字段描述的值是“带有“ ALIGATOR”的代码”,则我只能在特殊字符前添加“ \”以生成有效的JSON并转换为c#,如下所示:

string jsonString = {\"name\":\"Jones Smith\",\"age\":\"20\",\"description\":\"The one live with \\"ALIGATOR\\"\"}