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
運行效果: