gpt4 book ai didi

c++ - 在 C++ 中访问 JSON 值

转载 作者:行者123 更新时间:2023-11-30 03:39:56 27 4
gpt4 key购买 nike

我正在尝试编写一个程序,在虚幻引擎中为一个小型应用程序导航您的本地磁盘。我已经使用 Gradle 组装了一个 REST 服务器,长话短说,我得到了一个带有机器目录的 JSON。我想提取特定的目录名称,以字符串形式返回(特别是 FText,但在这里不太重要)数组。

我在 github ( https://github.com/nlohmann/json ) 上找到了一个由 nLohmann 创建的库,它似乎是用 C++ 处理 JSON 的最佳方式。然而,对于我的生活,我无法弄清楚如何提取目录名称。我试过一个迭代器和一个直接的 .value() 调用。

代码和 JSON 示例如下,任何见解将不胜感激。

char buffer[1024];

FILE *lsofFile_p = _popen("py C:\\Users\\jinx5\\CWorkspace\\sysCalls\\PullRoots.py", "r");
fgets(buffer, sizeof(buffer), lsofFile_p);
_pclose(lsofFile_p);

std::string rootsJson(buffer);
string s = rootsJson.substr(1);
s = ReplaceAll(s, "'", "");

//here my string s will contain: [{"description":"Local Disk","name":"C:\\"},{"description":"Local Disk","name":"D:\\"},{"description":"CD Drive","name":"E:\\"}]


//These are two syntax examples I found un nlohmann's docs, neither seems to work
auto j = json::parse(s);
string descr = j.value("description", "err");

最佳答案

我认为您的问题来自您的文字字符串中的 \ 数量。 C:\\ 需要 5 个 \:C:\\\\\

这是一个工作示例:

#include "json.hpp"
#include <string>

using namespace std;
using json = nlohmann::json;

int main(){

json j = json::parse("[{\"description\":\"Local Disk\",\"name\":\"C:\\\\\"},{\"description\":\"Local Disk\",\"name\":\"D:\\\\\"},{\"description\":\"CD Drive\",\"name\":\"E:\\\\\"}]");

cout << j.is_array() << endl;

for (auto& element : j) {
std::cout << "description : " << element["description"] << " | " << " name : " << element["name"] << '\n';
}
return 0;
}

关于c++ - 在 C++ 中访问 JSON 值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38446332/

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