- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我正在尝试使用 nlohmann::json 遍历嵌套的 json。我的 json 对象如下:
{
"one": 1,
"two": 2
"three": {
"three.one": 3.1
},
}
我正在尝试迭代和/或查找嵌套对象。但是,似乎没有默认支持它。看来我必须通过创建另一个循环来遍历每个子对象,或者为每个子对象递归调用 fn。
我的以下代码及其结果表明,只有顶层迭代是可能的。
void findNPrintKey (json src, const std::string& key) {
auto result = src.find(key);
if (result != src.end()) {
std::cout << "Entry found for : " << result.key() << std::endl;
} else {
std::cout << "Entry not found for : " << key << std::endl ;
}
}
void enumerate () {
json j = json::parse("{ \"one\" : 1 , \"two\" : 2, \"three\" : { \"three.one\" : 3.1 } } ");
//std::cout << j.dump(4) << std::endl;
// Enumerate all keys (including sub-keys -- not working)
for (auto it=j.begin(); it!=j.end(); it++) {
std::cout << "key: " << it.key() << " : " << it.value() << std::endl;
}
// find a top-level key
findNPrintKey(j, "one");
// find a nested key
findNPrintKey(j, "three.one");
}
int main(int argc, char** argv) {
enumerate();
return 0;
}
和输出:
ravindrnathsMBP:utils ravindranath$ ./a.out
key: one : 1
key: three : {"three.one":3.1}
key: two : 2
Entry found for : one
Entry not found for : three.one
那么,是否有可用的递归迭代,还是我们必须自己使用 is_object() 方法来执行此操作?
最佳答案
确实,迭代不会递归,并且(目前)还没有库函数。关于:
#include "json.hpp"
#include <iostream>
using json = nlohmann::json;
template<class UnaryFunction>
void recursive_iterate(const json& j, UnaryFunction f)
{
for(auto it = j.begin(); it != j.end(); ++it)
{
if (it->is_structured())
{
recursive_iterate(*it, f);
}
else
{
f(it);
}
}
}
int main()
{
json j = {{"one", 1}, {"two", 2}, {"three", {"three.one", 3.1}}};
recursive_iterate(j, [](json::const_iterator it){
std::cout << *it << std::endl;
});
}
输出是:
1
"three.one"
3.1
2
关于c++ nlohmann json - 如何迭代/查找嵌套对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45934851/
我有 nlohmann json 对象: json uuid = R"( { "uuid": ["aaa","bbb","cc
我正在尝试使用 json-nlohmann在 C++ 中读取 JSON 文件的库 到目前为止,我与它相处得很好,但现在我正在尝试访问给定 json 中的列表元素。 JSON: { "GameM
我目前正在以这种方式阅读我的文件: using json = nlohmann::json; std::ifstream jsonConfigFileStream("/path/to/file.jso
我正在使用 nlohmann::json,我需要做的就是复制一个 JSON 对象,然后更改其中的一些键。是否可以更改 nlohmann::json 对象中的键? 基本上我想做的是: json obj1
我有一个这样的嵌套 Json: string strJson = "{ "Header": {"Version":"V0.00.01","ID":"1000","Name":"Set
与 nlohmann::json 可以使用几个不同的表达式来解析一个对象: type x = json; type x; x = json.get(); 然而,type x; x = json;不起作
我得到的字符串 { "players": [ { "SteamId": "765611974898245625", "Commu
我已经使用nlohmann json库已有一段时间了,但是最近发现自己遇到了问题。我有一个对象的索引 vector : vector indexes = {"value1", "subval"}; /
假设我有一个如下所示的 json 数组: [ { "Name": "test", "Val": "test_val" }, { "Name": "test2",
我目前遇到一个问题,无论我在 IDE 中做什么,visual studio 代码都无法识别包含的 json.hpp 文件,我不知道问题是否是由 IDE 引起的,我自己的愚蠢错误,还是顺便安装了json
我正在尝试使用 nlohmann::json 遍历嵌套的 json。我的 json 对象如下: { "one": 1, "two": 2 "three": {
我试图搜索如何使用 JSON for Modern C++ 从 json 获取数组,但找不到答案。 我有这样的 json: { "Command": "cmd", "Data":{"time"
我的 JSON 文件类似于此 { "active" : false, "list1" : ["A", "B", "C"], "objList" : [ { "key1"
我有一些数据,比如 { "GLOBAL DATA": { "FIRST": [ {"BEGIN": "0", "END" : "100"}
我可以在 nlohmann 库中使用这种语法 { "key1": {"subKey1": "value11", "subKey2": "value12"}, "key2": {
我想知道如何删除 nlohmann::json 中的项目中的项目C++ 库。 JSON 示例文件: { "Users":{ "User1":{ "Nam
我有以下代码(简化): namespace nlohmann { // https://github.com/nlohmann/json/issues/1749#issuecomment-772996
nlohmann array_t 与Nlohmann json array 有何不同?实际如何使用 array_t ?每个文档如下。 array Creates a JSON array value
我正在尝试转换表单的 json { "content": { "test_key": "test" }, "sender": "alice", "type": "ke
我正在尝试使用 nlohmann 的 json.hpp 解析 JSON 结构.但我不会从字符串创建 JSON 结构。我已经尝试了所有方法,但仍然失败。 我的要求是: 1) 从字符串创建 JSON 结构
我是一名优秀的程序员,十分优秀!