C#解析JSON中的数组

3
我有以下的json结构:
{
    [{
        "name": "2542",
        "type": "FOLDER",
        "size": 0,
        "time": 0,
        "items": [{
            "name": "10-1432927746000.ksf",
            "type": "FILE",
            "size": 225,
            "time": 1433019520,
            "items": null,
            "info": {
                "seller": 10,
                "count": 2
            }
        }],
        "info": null
    }]
}

我该如何使用C#解析它?我尝试过var results = JsonConvert.DeserializeObject<dynamic>(json),但结果是错误的:

无效的属性标识符字符:[。路径“”,行1,位置1。


尝试这个:https://dev59.com/RGQo5IYBdhLWcg3wE8G2#16333468 - user786
2
我不太确定这是否是有效的JSON;最外层的数组应该以一个标识符开头,例如{ "things":[....]}。 - Stephen Byrne
2
这是无效的JSON。请查看http://jsonlint.com/。你以一个对象开始,然后在里面放一个没有属性名的数组。 - Ivan Sivak
2
是一个数组还是单个对象?试着去掉第一个大括号! - Daniel Oliveira
1
你可以使用下面的答案或者你可以去掉外部大括号 {}。 - Anupam Singh
2个回答

3

这个JSON发布的时候没有通过检查,所以我怀疑这可能是你问题的根源。

然而,这个JSON通过了检查:

{
    "things":[{
        "name": "2542",
        "type": "FOLDER",
        "size": 0,
        "time": 0,
        "items": [{
            "name": "10-1432927746000.ksf",
            "type": "FILE",
            "size": 225,
            "time": 1433019520,
            "items": null,
            "info": {
                "seller": 10,
                "count": 2
            }
        }],
        "info": null
    }]
}

请注意最外层的数组现在有一个标识符 which is required;也就是说,您解析出的对象将具有一个内部结构的数组属性things

3

补充@Stephen的答案,你仍可以仅使用内部数组,就像这个示例中所示。

[{
        "name": "2542",
        "type": "FOLDER",
        "size": 0,
        "time": 0,
        "items": [{
            "name": "10-1432927746000.ksf",
            "type": "FILE",
            "size": 225,
            "time": 1433019520,
            "items": null,
            "info": {
                "seller": 10,
                "count": 2
            }
        }],
        "info": null
    }]

无论如何,问题似乎在于您最初的JSON数据。=)

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接