cJSON的读写与个人理解
[TOC]
写cJSON
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52
|
std::ofstream ofs(fileName.toLocal8Bit().constData(), std::ios::out | std::ios::trunc); if (!ofs.good()) return;
std::shared_ptr<cJSON> idx(cJSON_CreateObject(), cJSON_Delete); cJSON* jsonObj = idx.get();
double *v=0.01; JSON_DOUBL_SET(v);
double *array = array[n]; JSON_DOUBLEARRAY_SET(array, n);
cJSON *List = cJSON_CreateArray(); for (const QString str : yourList) { QByteArray strArr = str.toLocal8Bit(); cJSON_AddItemToArray(List, cJSON_CreateString(std::string(strArr.constData(), strArr.length()).c_str())); } cJSON_AddItemToObject(jsonObj, "List", List);
char* idx_txt = cJSON_Print(jsonObj); ofs << idx_txt; ofs.close(); free(idx_txt);
|
cJSON读
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47
|
std::vector<char> idx_input; qint64 len = QFileInfo(fileName).size(); idx_input.resize(len + 1); std::ifstream ifs(fileName.toLocal8Bit().constData(), std::ios::in); if (!ifs.good()) return; ifs.read(&(idx_input.front()), len); idx_input.back() = '\0'; ifs.close(); std::shared_ptr<cJSON> idx(cJSON_Parse(&(idx_input.front())), cJSON_Delete); cJSON* jsonObj = idx.get(); if (!jsonObj) return;
cJSON* v = cJSON_GetObjectItem(jsonObj, "v"); if (v) yourV = v->valueint); else return false;
int v=0; JSON_INT_GET(v);
cJSON* List = cJSON_GetObjectItem(jsonObj, "List"); if (List) { for (int i = 0; i < cJSON_GetArraySize(List); i++) { cJSON *tmp = cJSON_GetArrayItem(List, i); yourList.append(QString::fromLocal8Bit(tmp->valuestring)); } } else return;
|
更复杂的数据结构请参考
https://blog.csdn.net/QiHsMing/article/details/94671262?utm_medium=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-3.nonecase&depth_1-utm_source=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-3.nonecase