Xamarin形式的Json反序列化问题

时间:2019-03-25 09:19:02

标签: json xamarin.forms deserialization

我有一个xamarin.forms应用程序,在其中反序列化json数据。反序列化工作良好,直到json上出现双引号为止。json反序列化器引发错误。

我的Json数据

 {
  "Model_id": 403,
  "Model": "iPad Pro 9.7""
}

9.7后面的多余的“会引起问题。但是双引号表示设备的英寸。

我的反序列化

 resultObject = JsonConvert.DeserializeObject<T>(resultJSON);

我该如何解决?任何帮助表示赞赏。

1 个答案:

答案 0 :(得分:2)

简单来说,提供的JSON不是有效的JSON。参见RFC

  

字符串的表示类似于C语言中使用的约定      编程语言家族。字符串开头和结尾      引号。所有Unicode字符都可以放在      引号,,必须转义的字符除外:      引号,反斜线和控制字符(U + 0000      通过U + 001F)。

(强调我的)

这意味着,您必须在字符串中转义引号。

{
  "Model_id": 403,
  "Model": "iPad Pro 9.7\""
}

严格来说,转义字符的首选方式是通过字符的Unicode转义序列,即反斜杠后跟u,然后是Unicode编号,对于引号将是\ u0022标记。这将呈现您的JSON

{
  "Model_id": 403,
  "Model": "iPad Pro 9.7\u0022"
}

无论如何,RFC也指出了

  

或者,有两个字符的序列转义      一些流行角色的表现形式。

\"是其中之一。