用C++和Jsoncpp解析youtube数据



下面是我想要解析的一个示例提要:https://gdata.youtube.com/feeds/api/users/aniBOOM/subscriptions?v=2&alt=json

你可以通过http://json.parser.online.fr/看看它包含什么。

我在解析youtube提供的数据源时遇到了一个小问题。第一个问题是youtube提供feed字段中封装的数据的方式,因此我无法直接从原始json文件中解析用户名,所以我必须解析第一个条目字段,并从中生成新的json数据。

无论如何,问题是由于某种原因,它不包括超过第一个用户名,我不知道为什么,因为如果你检查在线解析器上的提要,条目应该包含所有用户名。

`

        data = value["feed"]["entry"];
        Json::StyledWriter writer;
        std::string outputConfig = writer.write( data );
//This removes [ at the beginning of entry and also last ] so we can treat it as a Json data
        size_t found;
        found=outputConfig.find_first_of("[");
        int sSize = outputConfig.size();            
        outputConfig.erase(0,1);
        outputConfig.erase((sSize-1),sSize);
        reader.parse(outputConfig, value2, false);
        cout << value2 << endl;
        Json::Value temp;
        temp = value2["yt$username"]["yt$display"];
        cout << temp << endl;
        std::string username = writer.write( temp );
        int sSize2 = username.size();           
        username.erase(0,1);
        username.erase((sSize2-3),sSize2);

`但由于某种原因,[]fix也会剪切我生成的数据,如果我打印出数据而不删除[],我可以看到所有用户,但在这种情况下,我无法提取temp=value2["yt$username"]["yt$display"];

在JSON中,括号表示数组(此处引用不错)。您可以在在线解析器中看到这一点,也可以看到——对象(具有一个或多个键/值对{"key1": "value1", "key2": "value2"}的项目)用蓝色+/-符号表示,数组(括号内的项目用逗号[{arrayItem1}, {arrayItem2}, {arrayItem3}]分隔)用红色+/-符号表示。

由于条目是一个数组,您应该能够通过执行以下操作来遍历它们:

// Assumes value is a Json::Value 
Json::Value entries = value["feed"]["entry"];
size_t size = entries.size();
for (size_t index=0; index<size; ++index) {
    Json::Value entryNode = entries[index];
    cout << entryNode["yt$username"]["yt$display"].asString() << endl;
}

相关内容

  • 没有找到相关文章

最新更新