jsoncpp读写多重结构体
时间: 2023-12-02 18:40:27 浏览: 134
qt jsoncpp 读写
以下是使用jsoncpp读写多重结构体的示例代码:
```cpp
#include <iostream>
#include <fstream>
#include "json/json.h"
using namespace std;
int main() {
// 创建一个Json::Value对象
Json::Value root;
// 添加一个数组
Json::Value array(Json::arrayValue);
array.append("value1");
array.append("value2");
array.append("value3");
// 添加一个对象
Json::Value object(Json::objectValue);
object["key1"] = "value1";
object["key2"] = "value2";
object["key3"] = "value3";
// 将数组和对象添加到root对象中
root["array"] = array;
root["object"] = object;
// 将root对象序列化为字符串
Json::StyledWriter writer;
string json_str = writer.write(root);
// 输出序列化后的字符串
cout << json_str << endl;
// 将json字符串反序列化为Json::Value对象
Json::Reader reader;
Json::Value root2;
reader.parse(json_str, root2);
// 从反序列化后的对象中获取数组和对象
Json::Value array2 = root2["array"];
Json::Value object2 = root2["object"];
// 输出数组和对象中的值
for (int i = 0; i < array2.size(); i++) {
cout << array2[i].asString() << endl;
}
cout << object2["key1"].asString() << endl;
cout << object2["key2"].asString() << endl;
cout << object2["key3"].asString() << endl;
// 将root对象写入文件
ofstream ofs("test.json");
ofs << writer.write(root);
ofs.close();
// 从文件中读取json字符串并反序列化为Json::Value对象
ifstream ifs("test.json");
Json::Value root3;
reader.parse(ifs, root3);
// 输出反序列化后的对象中的值
cout << root3["array"][0].asString() << endl;
cout << root3["object"]["key1"].asString() << endl;
return 0;
}
```
阅读全文