const char* resp = "{\"code\":0, \"flag\":true, \"msg\":\"success\"}";
bool bRet = false;
JSON_Value *rootValue = NULL;
do {
//反序列化为json对象
rootValue = json_parse_string(resp);
if (rootValue == NULL) {
break;
}
JSON_Object *rootObject = json_value_get_object(rootValue);
if (rootObject == NULL) {
break;
}
if (!json_object_has_value(rootObject, "code")) {
break;
}
int code = json_object_get_number(rootObject, "code");
if (!json_object_has_value(rootObject, "flag")) {
break;
}
bool flag = json_object_get_boolean(rootObject, "flag");
if (!json_object_has_value(rootObject, "msg")) {
break;
}
const char* msg = json_object_get_string(rootObject, "msg");
printf("code = %d, flag = %d, msg = %s\n", code, flag, msg);
bRet = true;
} while (0);
if (rootValue != NULL) {
json_value_free(rootValue);
rootValue = NULL;
}
return bRet;
code = 0, flag = 1, msg = success
const char* resp = "{\"code\":0, \"msg\":\"success\", \"data\":{\"name\":\"lucy\", \"score\":99.5}}";
bool bRet = false;
JSON_Value *rootValue = NULL;
do {
rootValue = json_parse_string(resp);
if (rootValue == NULL) {
break;
}
JSON_Object *rootObject = json_value_get_object(rootValue);
if (rootObject == NULL) {
break;
}
if (!json_object_has_value(rootObject, "code")) {
break;
}
int code = json_object_get_number(rootObject, "code");
if (!json_object_has_value(rootObject, "msg")) {
break;
}
const char* msg = json_object_get_string(rootObject, "msg");
if (!json_object_has_value(rootObject, "data")) {
break;
}
JSON_Object *dataObject = json_object_get_object(rootObject, "data");
if (dataObject == NULL) {
break;
}
if (!json_object_has_value(dataObject, "name")) {
break;
}
const char* name = json_object_get_string(dataObject, "name");
if (!json_object_has_value(dataObject, "score")) {
break;
}
double score = json_object_get_number(dataObject, "score");
printf("code = %d, msg = %s, name = %s, score = %lf\n", code, msg, name, score);
bRet = true;
} while (0);
if (rootValue != NULL) {
json_value_free(rootValue);
rootValue = NULL;
}
return bRet;
code = 0, msg = success, name = lucy, score = 99.500000
const char* resp = "{\"code\":0, \"msg\":\"success\", \"result\":[\"tcp\", \"udp\", \"http\", \"tls\"]}";
bool bRet = false;
JSON_Value *root_value = NULL;
do {
root_value = json_parse_string(resp);
if (root_value == NULL) {
break;
}
JSON_Object *root_object = json_value_get_object(root_value);
if (root_object == NULL) {
break;
}
if (!json_object_has_value(root_object, "code")) {
break;
}
int code = json_object_get_number(root_object, "code");
printf("code is %d\n", code);
if (!json_object_has_value(root_object, "msg")) {
break;
}
const char* msg = json_object_get_string(root_object, "msg");
printf("msg is %s\n", msg);
if (!json_object_has_value(root_object, "result")) {
break;
}
JSON_Array *result_obj = json_object_get_array(root_object, "result");
if (result_obj == NULL) {
break;
}
printf("result: ");
for (int i = 0; i < json_array_get_count(result_obj); i++) {
const char *pStr = json_array_get_string(result_obj, i);
if (pStr != NULL) {
printf("%s ", pStr);
}
}
printf("\n");
bRet = true;
} while (0);
if (root_value != NULL) {
json_value_free(root_value);
root_value = NULL;
}
return bRet;
code is 0
msg is success
result: tcp udp http tls
{"code":0,"flag":true,"msg":"success"}
bool bRet = false;
JSON_Value *rootValue = NULL;
do {
// 如果json文件内容带注释可用这个函数 json_parse_file_with_comments
rootValue = json_parse_file("test.json");
if (rootValue == NULL) {
break;
}
JSON_Object *rootObject = json_value_get_object(rootValue);
if (rootObject == NULL) {
break;
}
if (!json_object_has_value(rootObject, "code")) {
break;
}
int code = json_object_get_number(rootObject, "code");
if (!json_object_has_value(rootObject, "flag")) {
break;
}
bool flag = json_object_get_boolean(rootObject, "flag");
if (!json_object_has_value(rootObject, "msg")) {
break;
}
const char* msg = json_object_get_string(rootObject, "msg");
printf("code = %d, flag = %d, msg = %s\n", code, flag, msg);
bRet = true;
} while (0);
if (rootValue != NULL) {
json_value_free(rootValue);
rootValue = NULL;
}
return bRet;
code = 0, flag = 1, msg = success
bool bRet = false;
JSON_Value *root_value = NULL;
do {
root_value = json_value_init_object();
if (root_value == NULL) {
break;
}
JSON_Object *root_object = json_value_get_object(root_value);
if (root_object == NULL) {
break;
}
json_object_set_number(root_object, "code", 0);
json_object_set_boolean(root_object, "flag", true);
json_object_set_string(root_object, "msg", "success");
json_object_set_number(root_object, "rate", 10.5);
char *data = json_serialize_to_string(root_value);
if (data == NULL) {
break;
}
printf("%s\n", data);
bRet = true;
json_free_serialized_string(data);
} while (0);
if (root_value != NULL) {
json_value_free(root_value);
root_value = NULL;
}
return bRet;
{"code":0,"flag":true,"msg":"success","rate":10.5}
bool bRet = false;
JSON_Value *root_value = NULL;
do {
root_value = json_value_init_object();
if (root_value == NULL) {
break;
}
JSON_Object *root_object = json_value_get_object(root_value);
if (root_object == NULL) {
break;
}
JSON_Value *data_value = json_value_init_object();
if (data_value == NULL) {
break;
}
JSON_Object *data_object = json_value_get_object(data_value);
if (data_object == NULL) {
break;
}
json_object_set_string(data_object, "name", "jack");
json_object_set_number(data_object, "age", 28);
json_object_set_number(root_object, "code", 0);
json_object_set_boolean(root_object, "flag", true);
json_object_set_string(root_object, "msg", "success");
json_object_set_value(root_object, "data", data_value);
char *data = json_serialize_to_string(root_value);
if (data == NULL) {
break;
}
printf("%s\n", data);
bRet = true;
json_free_serialized_string(data);
} while (0);
if (root_value != NULL) {
json_value_free(root_value);
root_value = NULL;
}
return bRet;
{"code":0,"flag":true,"msg":"success","data":{"name":"jack","age":28}}
bool bRet = false;
JSON_Value *root_value = NULL;
do {
root_value = json_value_init_object();
if (root_value == NULL) {
break;
}
JSON_Object *root_object = json_value_get_object(root_value);
if (root_object == NULL) {
break;
}
JSON_Value *data_value = json_value_init_object();
if (data_value == NULL) {
break;
}
JSON_Object *data_object = json_value_get_object(data_value);
if (data_object == NULL) {
break;
}
JSON_Value *dataValueArray = json_value_init_array();
if (dataValueArray == NULL) {
break;
}
JSON_Array *dataObjectArray = json_value_get_array(dataValueArray);
if (dataObjectArray == NULL) {
break;
}
for (int i = 0; i < 5; i++) {
JSON_Value *pValue = json_value_init_object();
if (pValue == NULL) {
break;
}
JSON_Object *pObject = json_value_get_object(pValue);
if (pObject == NULL) {
break;
}
json_object_set_number(pObject, "index", i);
json_object_set_string(pObject, "status","success");
json_array_append_value(dataObjectArray, pValue);
}
json_object_set_string(data_object, "name", "jack");
json_object_set_number(data_object, "age", 28);
json_object_set_number(root_object, "code", 0);
json_object_set_boolean(root_object, "flag", true);
json_object_set_string(root_object, "msg", "success");
json_object_set_value(root_object, "data", dataValueArray);
char *data = json_serialize_to_string(root_value);
if (data == NULL) {
break;
}
printf("%s\n", data);
bRet = true;
json_free_serialized_string(data);
} while (0);
if (root_value != NULL) {
json_value_free(root_value);
root_value = NULL;
}
return bRet;
{"code":0,"flag":true,"msg":"success","data":[{"index":0,"status":"success"},{"index":1,"status":"success"},{"index":2,"status":"success"},{"index":3,"status":"success"},{"index":4,"status":"success"}]}
bool bRet = false;
JSON_Value *root_value = NULL;
do {
root_value = json_value_init_object();
if (root_value == NULL) {
break;
}
JSON_Object *root_object = json_value_get_object(root_value);
if (root_object == NULL) {
break;
}
json_object_set_number(root_object, "code", 0);
json_object_set_boolean(root_object, "flag", true);
json_object_set_string(root_object, "msg", "success");
json_object_set_number(root_object, "rate", 10.5);
JSON_Status status = json_serialize_to_file(root_value, "test.json");
if (status == JSONFailure) {
break;
}
bRet = true;
} while (0);
if (root_value != NULL) {
json_value_free(root_value);
root_value = NULL;
}
return bRet;
{"code":0,"flag":true,"msg":"success","rate":10.5}