Json-c構建對象

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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章