【发布时间】:2014-12-02 17:03:04
【问题描述】:
我有一个大的 json 文件,它有 5 个子节点,其中 4 个是对象,一个是数组。
当我循环浏览它们时,我用下面的代码点击了数组,但它失败了,抱怨对象不是“jObject”类型。如果我把 JArray 它修复它但我不确定如何事先检查 json 是 jObject 还是 jArray?
for (int i = 0; i < jsonChildObjectsArray.Length; i++)
{
string jsonCategoryContents = json[jsonChildCategorysArray[i]].ToString();
jsonChildObjectsArray[i] = jsonCategoryContents;
JObject jsonCategoryObject = JObject.Parse(jsonCategoryContents);
//error's here on 5th element as it is a jArray type.
}
【问题讨论】:
-
你能创建一个模拟整个文件的类吗?那么就让解析器来搞清楚如何解码呢?
-
很遗憾没有,我最多可以假设它的格式很好。
-
@Fearghal,如果确实如此,那么我会将其分解为多个步骤。解析你得到的可能是格式正确的字符串,也可能不是。您可以将其解析为 JSON,然后使用解析器,或者自己将其解析为您需要的目标对象。如果您不能真正依赖正确的架构甚至是格式正确的内容,那么使用预期的工具总是会非常令人沮丧。
-
谢谢一百万,我可以定义它的格式很好,只是不一致。
-
@Fearghal,如果您对 JSON 的源有任何控制权,那么您可以添加模式定义变量,告诉您接下来要解析哪种类型的随机变量。它确实为文件增加了一些开销。通常最好在传输之前将它们分解为特定的 JSON 模式类型。