1

从服务器我得到json。Json 很大。我只展示这个

{
      "id": "9429531978965160",
      "name": "Morning in  "Paris"",  // json.net cannot deserialize this line, because line have no escaped quotes.
     "alias": "ThisAlias"
}
4

2 回答 2

0

问题是生成无效 JSON 的服务器端。

您可以尝试编写一个修复此问题的正则表达式(搜索第三个和最后一个之间的任何引号)。请注意,JSON 可能存在许多其他问题,例如未转义的换行符等。

于 2013-03-29T12:07:30.410 回答
0

不仅仅是您收到的输出是非标准的 json,它还被破坏,以至于它不是一种定义明确的语言,即使在简单的情况下也不会明确解析。你应该如何解析{"a": "A", "b": "B"}?一种方法是合法的json。a另一个有效的解析是具有 value的单个属性"A\", \"b\": \"B"

正如其他人所说,最好的解决方案是修复服务器,使其不再输出无效垃圾。如果这不是一个选项,您将不得不编写自己的解析器。普通解析器会在“Paris”中的“P”处声明语法错误。您的解析器可以备份到最后一个引号标记并尝试将其视为已转义。下一个语法错误出现在第二个连续引号中,它可以再次备份并将引号标记视为已转义。如果输入偏离合法 json 的任何其他方式,您也需要处理这些方式。

如果您不熟悉解析器,这将需要一段时间。完成后,您将拥有一个解析器,该解析器可以识别一种指定不佳且几乎完全无用的语言,也就是说,这在很大程度上是浪费时间。尽你所能在服务器端修复它。

于 2013-03-29T23:43:31.263 回答