json可以使用普遍用的比较多的cison
也可以使用别人写的比较好用的一些现成的,比如庆科MICO的json处理
一、cjson
下载链接 https://github.com/DaveGamble/cJSON
下载完成将其中的cJson.c cJson.h复制到自己的项目中引用即可;
1.字符串转json格式
cJSON *json = cJSON_Parse(str)
a.字符串指针类型
b.返回的cJSON指针类型
2.在指定的cJSON通过key查找value
const char *str = cJSON_Print(cJSON_GetObjectItem(json, "age"))
a.json为原始cJSON类型指针,age为key,str为返回接收的char *
b.如果返回的value为int 等整型,可以调用atoi(const char * str)函数
int x = atoi(str);
cJSON_Print函数返回值的字符串会加双引号,解决方案为:
cJSON *json;
json = cJSON_Parse(text);
cJSON_GetObjectItem(json, "Action")->valuestring
这样返回的值没有双引号就是key对应的字符串本身。
二、MICO json
链接:https://pan.baidu.com/s/1wp056fwrK8WUeyyk1zKgcg
提取码:ulr5
详细官方说明
http://developer.mxchip.com/handbooks/117
一个简单的demo
json_c demo #include <stdio.h> #include "json.h" #include <stdint.h> int main() { char buf[] = " {"name":"zhangsan"} "; json_object *new_obj = NULL; char body[40]; new_obj = json_tokener_parse(buf);//字符串类型转json类型 if (is_error(new_obj)) { memset(body, 0x00, 40); sprintf(body, " {"dat":"err"} "); } json_object_object_foreach(new_obj, key, val)//通过json中的key查找value值 { if (!strcmp(key, "name")) { printf("name:%s ",json_object_get_string(val)); //取出当前value值 } } return 0; } 其中非常常用的三个函数: 1.字符串转json类型 json_tokener_parse 2.轮询json中的所有键值对,其实这个不是个函数,是通过一个宏实现的轮询 json_object_object_foreach 3.取出当前键值对中的值,返回值为字符串类型 json_object_get_string