我有一个xamarin.forms应用程序,在其中反序列化json数据。反序列化工作良好,直到json上出现双引号为止。json反序列化器引发错误。
我的Json数据
{
"Model_id": 403,
"Model": "iPad Pro 9.7""
}
9.7后面的多余的“会引起问题。但是双引号表示设备的英寸。
我的反序列化
resultObject = JsonConvert.DeserializeObject<T>(resultJSON);
我该如何解决?任何帮助表示赞赏。
答案 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也指出了
或者,有两个字符的序列转义 一些流行角色的表现形式。
和\"
是其中之一。