用户将访问路径写入JSON文件中的嵌套元素

ztmd8pv5  于 2023-01-14  发布在  其他
关注(0)|答案(1)|浏览(135)

我写了一段代码,提示用户输入JSON文件中某个元素的访问路径,然后检索该元素的值。但我只能访问根元素。用户应该写什么,例如get object. array [2]. field?我使用的是单include nlohmann/json库。
我的代码:

using json = nlohmann::json;

int main() {
std::ifstream file("test3.json");
json data;
file >> data;

std::string access_path;
std::cout << "Enter the access path to the nested element (e.g. 'object.array[2].field'): ";
std::getline(std::cin, access_path);

try {
    json nested_element = data.at(access_path);
    std::cout << "Value of element: " << nested_element.dump() << std::endl;
} catch (json::out_of_range& e) {
    std::cout << "Error: Invalid access path." << std::endl;
}

return 0;
}
0x6upsns

0x6upsns1#

首先,您需要一个json_pointer

json nested_element = data.at(json::json_pointer(access_path));

然后,在object中访问array[2]中的field将由用户输入为

/object/array/2/field

test3.json文件的示例版本:

{
        "object": {
                "array": [{
                                "field": "foo"
                        },

                        {
                                "field": "bar"
                        },
                        {
                                "field": "hello world"
                        }
                ]
        }
}

输出:

Value of element: "hello world"

相关问题