Json-c构建对象

本文详细阐述了Json-c中创建和操作对象的API,包括数据类型的枚举体、创建及获取对象的方法,并提供了编程实例展示如何使用这些API,帮助读者理解和应用Json-c。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Json-c构建对象

这篇文章着重介绍 Json-c 中对象创建的 API 及其示例。Json 的数据类型包括 null, boolean, int, double, string, object, array。在 json-c 中定义为枚举体类型:

enum json_type {
    json_type_boolean,
    json_type_double,
    json_type_int,
    json_type_object,
    json_type_array,
    json_type_string
};

API

在 Json-c 中创建相应数据类型对象的 API 命名规范为:

 struct json_object* json_object_new_**( /*argument list*/);

举例如:

/*Create a json_type_object object*/
struct json_object* json_object_new_object(void);
/*Create a json_type_array object*/
struct json_object* json_object_new_array(void)
/*Create a json_type_boolean object*/
struct json_object* json_object_new_boolean(json_bool b);
/*Create a json_type_int object*/
struct json_object* json_object_new_int(int32_t i);
/*Create a json_type_double object*/
struct json_object* json_object_new_double(double d);
/*Create a json_type_string object*/
struct json_object* json_object_new_string(const char *s);

相应地,获取对应类型的 json_object 的 API 名为:

return_type json_object_get_**(struct json_object *obj)

例如:

json_bool json_object_get_boolean(struct json_object *obj);
int32_t json_object_get_int(struct json_object *obj);
double json_object_get_double(struct json_object *obj);
const char* json_object_get_string(struct json_object *obj);
int json_object_get_string_len(struct json_object *obj);

这两种类型的 API,类似C++类的装换构造函数以及数据类型重载函数。
另外介绍两个经常用到的 API:

enum json_type json_object_get_type(struct json_object *obj);
int json_object_is_type(struct json_object *obj, enum json_type type);

分别用于获取 json_object的数据类型,判断 json_object是否为指定的类型。

编程实例

#include <json-c/json.h>
#include <stdio.h>

int main(int argc, char* argv[]) 
{
    json_object *jobj = json_object_new_object();
    json_object *jstring = json_object_new_string("Hello world, this is JSON!");
    json_object *jint = json_object_new_int(10);
    json_object *jboolean = json_object_new_boolean(1);
    json_object *jdouble = json_object_new_double(3.1415926);

    json_object *jarray = json_object_new_array();
    json_object *jstring1 = json_object_new_string("C");
    json_object *jstring2 = json_object_new_string("C++");
    json_object *jstring3 = json_object_new_string("Shell");
    json_object *jstring4 = json_object_new_string("Python");
    json_object_array_add(jarray, jstring1);
    json_object_array_add(jarray, jstring2);
    json_object_array_add(jarray, jstring3);
    json_object_array_add(jarray, jstring4);

    json_object_object_add(jobj, "Tifo", jstring);
    json_object_object_add(jobj, "Techonical Blog", jboolean);
    json_object_object_add(jobj, "Average Posts per day", jdouble);
    json_object_object_add(jobj, "Number of Posts", jint);
    json_object_object_add(jobj, "Catogories", jarray);

    printf("The json object created: %s\n", json_object_to_json_string(jobj));

    return 0;
}

编译运行:

gcc -o proc demo5.c -ljson

运行效果:
这里写图片描述

参考链接

【json】json-c接口
json-c / libjson Tutorial with Examples

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值