什么是Json

? Json(JavaScript Object Notation,JS 對象簡譜)是一種輕量級的數據交換格式。易于人閱讀和編寫。同時也易于機器解析和生成。

一些合法的Json實例:

鍵值對:(可以沒有鍵只有值)

鍵      值 
↓ ↓
1. {"name": "Leo", "sex": "male"}
2. {"name": "Jack", "age": 18, "address": {"country": "china", "zip-code": "10000"}}
3. {"a": "1", "b": [1,2,3]}


Json-c API

json_object支持類型:

/* supported object types */

typedef enum json_type {
/* If you change this, be sure to update json_type_to_name() too */
json_type_null,
json_type_boolean,
json_type_double,
json_type_int,
json_type_object,
json_type_array,
json_type_string
} json_type;


  1. 將符合Json格式的字符串構造成為一個Json對象
struct json_object * json_tokener_parse(const char *s);

  1. 將Json對象內容轉換成Json格式的字符串
const char *json_object_to_json_string(struct json_object *obj);

  1. 創建Json對象
struct json_object *json_object_new_object();

  1. 往Json對象中添加鍵值對
void json_object_object_add(struct json_object *obj, const char *key, struct json_object *value);

  1. 將C字符串轉換為Json字符串格式的對象
struct json_object* json_object_new_string(const char *s);

  1. 將整型數值轉換為Json格式的對象
struct json_object* json_object_new_int(int a);

  1. 獲取Json對象的整型數值
int32 json_object_get_int(struct json_object *obj);

  1. 獲取Json對象的字符串值
const char *json_object_get_string(struct json_object *obj);

  1. ? 解析Json分為兩步:
    ? 第一步:根據鍵名,從Json對象中獲取與對應數據的Json對象
struct json_object *json;
json_object_object_get_ex(obj, "name", &json);
  1. ? 第二步:根據數據類型,將數據對應的Json對象轉換為對應類型的數據
json_type type = json_object_get_type(json);

if(json_type_string == type){
printf("name: %s/n". json_object_get_string(json)); //json對象轉換成字符串類型
}

//類似的
json_object_object_get_ex(obj, "age", &json);
printf("age: %d/n", json_object_get_int(json));

json_object_object_get_ex(obj, "sex", &json);
printf("sex: %s/n", json_object_get_string(json));



?