在 C++ 中访问 json 数组值
access json array values in c++
我是 c++ 的新手,正在尝试使用 nlohmann 库,但我很困惑。我想修改 json.
中的对象数组
json =
{
"a": "xxxx",
"b": [{
"c": "aaa",
"d": [{
"e": "yyy"
},
{
"e": "sss",
"f": "fff"
}
]
}]
}
现在我想用上述结构中的“示例”替换 e
值。谁能帮帮我。
我尝试遍历 json 结构并能够读取“e”值但无法替换它。我试过:`
std::vector<std::string> arr_value;
std::ifstream in("test.json");
json file = json::parse(in);
for (auto& td : file["b"])
for (auto& prop : td["d"])
arr_value.push_back(prop["e"]);
//std::cout<<"prop" <<prop["e"]<< std::endl;
for (const auto& x : arr_value)
std::cout <<"value in vector string= " <<x<< "\n";
for (decltype(arr_value.size()) i = 0; i <= arr_value.size() - 1; i++)
{
std::string s = arr_value[i]+ "emp";
std::cout <<"changed value= " <<s << std::endl;
json js ;
js = file;
std::ofstream out("test.json");
js["e"]= s;
out << std::setw(4) << js << std::endl;
}
以下将 MODIFIED
附加到每个 "e" 值并将结果写入 test_out.json
:
#include <vector>
#include <iostream>
#include <fstream>
#include <nlohmann/json.hpp>
using json = nlohmann::json;
int main() {
std::ifstream in("test.json");
json file = json::parse(in);
for (auto& td : file["b"])
for (auto& prop : td["d"]) {
prop["e"] = prop["e"].get<std::string>() + std::string(" MODIFIED");
}
std::ofstream out("test_out.json");
out << std::setw(4) << file << std::endl;
}
prop["e"] = ...
行做了三件事:
- 它得到 属性 键
"e"
,
- 使用
.get<std::string>()
将其强制转换为字符串并附加 "modified"
和
- 将结果写回
prop["e"]
,这是对嵌套在 JSON 结构中的对象的引用。
我是 c++ 的新手,正在尝试使用 nlohmann 库,但我很困惑。我想修改 json.
中的对象数组json =
{
"a": "xxxx",
"b": [{
"c": "aaa",
"d": [{
"e": "yyy"
},
{
"e": "sss",
"f": "fff"
}
]
}]
}
现在我想用上述结构中的“示例”替换 e
值。谁能帮帮我。
我尝试遍历 json 结构并能够读取“e”值但无法替换它。我试过:`
std::vector<std::string> arr_value;
std::ifstream in("test.json");
json file = json::parse(in);
for (auto& td : file["b"])
for (auto& prop : td["d"])
arr_value.push_back(prop["e"]);
//std::cout<<"prop" <<prop["e"]<< std::endl;
for (const auto& x : arr_value)
std::cout <<"value in vector string= " <<x<< "\n";
for (decltype(arr_value.size()) i = 0; i <= arr_value.size() - 1; i++)
{
std::string s = arr_value[i]+ "emp";
std::cout <<"changed value= " <<s << std::endl;
json js ;
js = file;
std::ofstream out("test.json");
js["e"]= s;
out << std::setw(4) << js << std::endl;
}
以下将 MODIFIED
附加到每个 "e" 值并将结果写入 test_out.json
:
#include <vector>
#include <iostream>
#include <fstream>
#include <nlohmann/json.hpp>
using json = nlohmann::json;
int main() {
std::ifstream in("test.json");
json file = json::parse(in);
for (auto& td : file["b"])
for (auto& prop : td["d"]) {
prop["e"] = prop["e"].get<std::string>() + std::string(" MODIFIED");
}
std::ofstream out("test_out.json");
out << std::setw(4) << file << std::endl;
}
prop["e"] = ...
行做了三件事:
- 它得到 属性 键
"e"
, - 使用
.get<std::string>()
将其强制转换为字符串并附加"modified"
和 - 将结果写回
prop["e"]
,这是对嵌套在 JSON 结构中的对象的引用。