1. 程式人生 > 實用技巧 >【鴻蒙開發板試用】cJSON的使用

【鴻蒙開發板試用】cJSON的使用

目錄:
json的格式
生成json字串
解析json字串

原始碼包含第三方的cJSON庫,在目錄//third_party/cJSON,預設已經編譯進韌體。我們可以使用它的api,輕鬆的生成、解析json字串。下面用一個例子記錄cJSON的使用方法。

json的格式

首先一個花括號{},整個代表一個物件,同時裡面是一種Key-Value的儲存形式,它還有不同的資料型別來區分。

資料結構:Object、Array

基本型別:string,number,true,false,null

(1)Object

{key:value,key:value...}

key:string型別

value:任何基本型別或資料結構

(2)Array

[value,value...]

value:任何基本型別或資料結構。

比如:{"name":"李廣", "values":[1,2,45,"你好"] }

生成json字串

1)生成字串樣例:

 {                                                            
        "id":   123,                                                            
        "dp":   {                                                               
                "temperature":  [{                                              
                                "v":    23.5                                    
                        }],                                                     
                "humidity":     [{                                              
                                "v":    60.3                                    
                        }]                                                      
        }                                                                       
} 

2)建立物件root,根據實際需要,從外到內一層一層新增所需的物件、資料、元素等;

    cJSON *root, *array1, *array2, *object1, *object2, *object3;
    root = cJSON_CreateObject();
    cJSON_AddItemToObject(root, "id", cJSON_CreateNumber(123));
    cJSON_AddItemToObject(root, "dp", object1 = cJSON_CreateObject());
    
    cJSON_AddItemToObject(object1, "temperature", array1 = cJSON_CreateArray());
    cJSON_AddItemToArray(array1, object2 = cJSON_CreateObject());
    cJSON_AddNumberToObject(object2, "v", 23.5);
    
    cJSON_AddItemToObject(object1, "humidity", array2 = cJSON_CreateArray());
    cJSON_AddItemToArray(array2, object3 = cJSON_CreateObject());
    cJSON_AddNumberToObject(object3, "v", 60.3);

3)建立完成,呼叫函式列印生成的json字串;

    char *out = cJSON_Print(root);
    printf(" %s \n", out);

4)最後,釋放掉記憶體;呼叫cJSON_Delete(root),其餘子節點申請的記憶體會一併釋放掉。


    if(out)
    {
        free(out);
    }   
    if(root)
    {
        cJSON_Delete(root);
    }

解鎖更多章節>>>

作者:HarryP0tter
想了解更多內容,請訪問: 51CTO和華為官方戰略合作共建的鴻蒙技術社群https://harmonyos.51cto.com