概述
json-c 库中是在嵌入式开发中常用的库。 因为很多地方都以json数据数据交互协议, 尤其嵌入式web数据交互时通常会用到json格式, 因此如果需要在产品端进行json数据解析 , json-c 是一个比较不错的选择。 json-c库中有一个json对象 : 使用方式: 方式一:将json格式的字符串转成json对象 方式二:具有json格式文本内容的文本文件转化为json对象 (1)创建一个空的json_type_object类型JSON对象: (2)创建一个空的json_type_array类型JSON数组值对象: (3)从json中按名字取一个对象: (4)减少对象引用次数一次,当减少到0就释放(free)资源: (5)将json_object内容转换json格式字符串,其中可能含有转义符: (6)添加一个对象域到json对象中: (7)删除key值json对象: (8)得到json对象数组的长度: (9)添加一元素在json对象数组末端: (10)在指定的json对象数组下标插入或替换一个json对象元素: (11)从数组中,按下标取JSON值对象: (12)得到json_object的类型: 使用json-c 体会LINUX下C语言操作JSON数据JSON C语言API整理json-c库
API接口
jsonobj
.它会将一个json文件解析为一个json对象.
1.解析json文件,获取一个解析后的json对象.
2.访问对应的key值.
3.使用后,释放json对象.解析json文件
json_object* json_tokener_parse(const char *str);
json_object* json_object_from_file(const char *filename);
访问对应的key值
extern json_bool json_object_object_get_ex(struct json_object* obj,const char *key,struct json_object **value);
释放json文件
Void json_object_put(struct json_object * this);
其他常用API
struct json_object * json_object_new_object();
struct json_object * json_object_new_array();
struct json_object * json_object_object_get(struct json_object * json,char *name);
Void json_object_put(struct json_object * this);
char * json_object_to_json_string(struct json_object * this);
void json_object_object_add(struct json_object* obj, char *key, struct json_object *val);
void json_object_object_del(struct json_object* obj, char *key);
int json_object_array_length(struct json_object *obj);
extern int json_object_array_add(struct json_object *obj, struct json_object *val);
int json_object_array_put_idx(struct json_object *obj, int idx, struct json_object *val);
struct json_object * json_object_array_get_idx(struct json_object * json_array,int i);
enum json_type json_object_get_type(struct json_object * this )
参考代码[转载]
#include <stdio.h>
#include <json-c/json.h>
/*
{
Name: haha,
Id: 101,
Age: 21,
info:{
number: 1,
score: 91,
type: 2,
params: ""
}
}
*/
// gcc json-c_parse_string.c -ljson-c
int main(int argc, char const *argv[])
{
/* Declaring the json data's in json format. */
char buf[] = "{ "Name": "haha", "Id": 101, "Age": 21, "info": { "number": 1, "score": 91, "type": 2, "params": "w" } }";
/* Declaring the json_object. To pass the Json string to the newly created json_object. */
json_object *new_obj = json_tokener_parse(buf);
if (!new_obj)
return -1;
json_object *val_obj = NULL;
json_object *result = NULL;
const char *str = NULL;
/* To get the data's then we have to get to the specific node by using the below function. */
if( json_object_object_get_ex(new_obj, "Name", &val_obj) ) {
str = json_object_get_string(val_obj);
printf("Name: %sn", str);
}
if( json_object_object_get_ex(new_obj, "Id", &val_obj) ) {
str = json_object_get_string(val_obj);
printf("Id: %sn", str);
}
if( json_object_object_get_ex(new_obj, "Age", &val_obj) ) {
str = json_object_get_string(val_obj);
printf("Age: %sn", str);
}
if( json_object_object_get_ex(new_obj, "info", &val_obj) ) {
if( json_object_object_get_ex(val_obj, "number", &result) ) {
printf("tinfo -> number: %dn", json_object_get_int(result));
}
if( json_object_object_get_ex(val_obj, "score", &result) ) {
printf("tinfo -> score: %dn", json_object_get_int(result));
}
if( json_object_object_get_ex(val_obj, "type", &result) ) {
printf("tinfo -> type: %dn", json_object_get_int(result));
}
if( json_object_object_get_ex(val_obj, "params", &result) ) {
printf("tinfo -> params: %sn", json_object_get_string(result));
}
}
json_object_put(new_obj); // to return the pointer to its originalobjects
return 0;
}
参考
最后
以上就是感性白云为你收集整理的Android下json-c库使用的全部内容,希望文章能够帮你解决Android下json-c库使用所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复