gpt4 book ai didi

c++ - nlohmann json将.at()方法用于索引 vector

转载 作者:行者123 更新时间:2023-12-02 10:18:11 26 4
gpt4 key购买 nike

我已经使用nlohmann json库已有一段时间了,但是最近发现自己遇到了问题。我有一个对象的索引 vector :

vector<string> indexes = {"value1", "subval"}; // etc

我想做这样的事情:
json myObj = "{\"value1\":{}}"_json;
myObj["value1"]["subval"] = "test";

我怎样才能做到这一点?

我尝试了这个:
json myObj = "{\"value1\":{}}"_json;
json ref = myObj;

for (string i : indexes) {
ref = ref[i];
}

myObj = ref;

但这是行不通的,因为它没有访问嵌套元素,只是将对象设置为嵌套值。

最佳答案

json ref = myObj;



执行此操作时,您应该意识到ref不是引用或指针,无论您想要什么。这是 副本

解决方案:尝试改用 reference_wrapper
     vector<string> indexes = {"value1", "subval"};                                                                                                                                                         
json myObj;
auto ref = std::ref(myObj);

for (string i : indexes) {
ref = ref.get()[i];
}
ref.get() = "test";
std::cout << myObj << std::endl;

或者,也可以使用指针来代替reference_wrapper。你的愿望。 json& ref显然不起作用-您无法重新分配引用,因此可以重新分配reference_wrapper。

关于c++ - nlohmann json将.at()方法用于索引 vector ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61236603/

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