在C#中使用带有损坏数据的JSON

时间:2015-08-05 14:34:07

标签: c# json

我最近不得不解析像

这样的JSON数据
[
{"firstName":"John", "lastName":"Doe"},
{"firstName":"Anna", "lastName":"Smith"},
{"firstName":"Peter", "lastName":"Jones"}
]
像这样:

 var reqData = JsonConvert.DeserializeObject<Dictionary<string, object>>("{" + fileData + "}");

我在另一个数据格式良好的项目中使用过。然而,这里的数据有点腐败。例如&#34; firstName&#34;可能显示为&#34;。\&#34; firstName&#34;等等。使用上面的JSON会导致抛出异常。

我尝试了各种方案来清除&#34;数据,但由于我无法预测其他数据的状态,我停止使用JSON并自己解析它(大量使用子串并计算隔离键和值)。该方法工作正常但当然使用JSON会更简单。

有没有办法解决这个问题?

1 个答案:

答案 0 :(得分:1)

主要问题是定义损坏的数据。如果您知道永远不会有子字符串.\",那么您可以用空字符串替换它并在之后解析它。这没有问题,但如果它更复杂,那么做这样的事情可能会很困难 对于人来说,使用有效格式读取损坏数据有时没有问题 - 但对于简单算法来说几乎是不可能的。

顺便说一下,格式".\"firstName"是一个有效的JSON元素,因为"\转义。另见this question