我正在尝试编写一个程序,在虚幻引擎中为一个小应用程序导航本地光盘。我已经使用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");
答案 0 :(得分:2)
我认为您的问题来自您的文字字符串中\
的数量。 \
: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;
}