gpt4 book ai didi

c++ - 使用 C++ 和 Jsoncpp 解析 youtube 数据

转载 作者:太空狗 更新时间:2023-10-29 21:27:15 24 4
gpt4 key购买 nike

这是我要解析的示例提要: 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 中,括号表示数组(很好的引用 here )。您还可以在在线解析器中看到这一点——对象(具有一个或多个键/值对的项目 {"key1": "value1", "key2": "value2"})表示带有蓝色 +/- 符号的数组(括号内的项目用逗号分隔 [{arrayItem1}, {arrayItem2}, {arrayItem3}])用红色 +/- 符号表示。

因为 entry 是一个数组,你应该能够通过做这样的事情来遍历它们:

// 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;
}

关于c++ - 使用 C++ 和 Jsoncpp 解析 youtube 数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9538010/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com