写cJSON
/*
## 输出到文件流 即从内存到硬盘
@fileName 文件路径
@ std::ios::out | std::ios::trunc 打开文件的方式
@ 这些标识符可以被组合使用,中间以”或”操作符(|)间隔。
*/
std::ofstream ofs(fileName.toLocal8Bit().constData(), std::ios::out | std::ios::trunc);
if (!ofs.good())
return;
/*
@ jsonObj 这个cJSON一定要完全同名,原因是cJSON的宏要直接引用它,具体可以查看头文件的宏定义
*/
std::shared_ptr<cJSON> idx(cJSON_CreateObject(), cJSON_Delete);
cJSON* jsonObj = idx.get();
/*
@ v 变量名 最后保存到cJSON时将成为 字段名即key
@ 实际上cJson的数据存储方式可以理解为多层次()嵌套的键值对的集合 <key,value(<key,value>,<key,value>)>
*/
//double型 int string bool同理
double *v=0.01;
JSON_DOUBL_SET(v);
//double 数组 其他同理
double *array = array[n];
JSON_DOUBLEARRAY_SET(array, n);
/*
## 字符串列表 其他类型的List同理
## 只需将cJSON_CreateString 换成同作用的函数
@ yourList 为QStringList
*/
cJSON *List = cJSON_CreateArray();
for (const QString str : yourList)
{
QByteArray strArr = str.toLocal8Bit();
cJSON_AddItemToArray(List, c