0

如果我有这种 json 怎么办?我正在使用rapidjson

{[
    {
        "username": "A",
        "level": "1",
        "score": "1774"
    },
    {
        "username": "Ab",
        "level": "1",
        "score": "1923"
    },
    {
        "username": "M",
        "level": "1",
        "score": "1991"
    },
    {
        "username": "P",
        "level": "1",
        "score": "2030"
    },
    {
        "username": "Am",
        "level": "1",
        "score": "2044"
    }
]}

这肯定会使断言失败。

rapidjson::Document doc;
doc.Parse<0>(message.c_str());
assert(doc.IsObject());

如果它甚至没有键,如何提取数组?

4

1 回答 1

1

这不是有效的 JSON。对于 JSON 对象,即{ ... },它应该包含键值对。两种解决方案:

  1. 您可以简单地删除最{ }外层以使其成为有效的 JSON。然后根将是一个 JSON 数组,并且doc.IsArray() == true.

  2. 在数组之前添加一个键,例如{ "a" : [ ... ] }. 然后你可以通过doc["a"].

于 2015-02-11T01:37:20.333 回答