JSON解讀和cJSON API的使用

2021-10-09 13:32:01 字數 3777 閱讀 7718

1. json是什麼?

官方描述:

以上從json的概念,用途,支援平台三個方面解釋了json是什麼的問題。現在說下我個人的理解。

2. json物件是什麼? json資料是什麼? json資料字串是什麼?

3. cjson基本函式的使用。json資料格式檢查工具:

//以下列json資料的合成和分解為例。

}#include

#include "cjson.h"

int main()

;printf_s("---->---->---->---->json資料合成---->---->---->---->\n");

//新增鍵值對函式cjson_additemtoarray()引數1是目的物件,引數2是鍵名,引數3是鍵值。

//建立json物件,分配記憶體塊儲存json資料。

cjson* root = cjson_createobject();

//新增鍵值對到json物件,鍵值是字串。

cjson_addstringtoobject(root, "name", "李四");

//新增鍵值對到json物件,鍵值是數字。

cjson_addnumbertoobject(root, "age", 25);

//新增鍵值對到json物件,鍵值是數字。

cjson_addnumbertoobject(root, "height", 173.56);

//新增鍵值對到json物件,鍵值是陣列。

cjson *course = cjson_createarray();

//新增成員到陣列,因為引數2是cjon*型別,所以需要cjson_createstring建立。

cjson_additemtoarray(course, cjson_createstring("chinese"));

cjson_additemtoarray(course, cjson_createstring("english"));

cjson_additemtoarray(course, cjson_createstring("math"));

cjson_additemtoarray(course, cjson_createstring("physics"));

//新增陣列course到root物件。

cjson_additemtoobject(root, "course", course);

cjson* scores = cjson_createobject();

cjson_additemtoobject(scores, "chinese", cjson_createnumber(89));

cjson_additemtoobject(scores, "english", cjson_createnumber(130));

cjson_additemtoobject(scores, "math", cjson_createnumber(100));

cjson_additemtoobject(scores, "physics", cjson_createnumber(90));

//新增scores到root物件。

cjson_additemtoobject(root, "scores", scores);

//json資料組織完成,非格式化列印出來進行測試, 會申請額外記憶體。

const char *cjson_unformat_str = cjson_printunformatted(root);

//格式化列印出來進行測試,會申請額外記憶體。

const char* cjson_format_str = cjson_print(root);

//cjson_printbuffered(root, 1024, 1);

//銷毀json物件,釋放json資料占用的記憶體塊。

cjson_delete(root);

root = null;

//cjson_printunformatted cjson_print 會申請記憶體,所以使用完後要釋放。

printf_s("----> cjson_unformat_str: %s\n\n", cjson_unformat_str);

printf_s("----> cjson_format_str: %s\n", cjson_format_str);

//保留乙份副本。

strcpy(json_str, cjson_unformat_str);

free(cjson_unformat_str);

cjson_unformat_str = null;

free(cjson_format_str);

cjson_format_str = null;

printf_s("---->---->---->---->json資料分解---->---->---->---->\n");

//解析json字串為json物件。

root = cjson_parse(json_str);

if (null == root)

//獲取name鍵值的cjson物件。

cjson* name = cjson_getobjectitem(root, "name");

cjson* age = cjson_getobjectitem(root, "age");

cjson* height = cjson_getobjectitem(root, "height");

printf("----> name: %s\n", name->valuestring);

printf("----> age: %d\n", age->valueint);

printf("----> height: %lf\n", height->valuedouble);

//獲取course鍵值的cjson物件。

course = cjson_getobjectitem(root, "course");

//獲取陣列大小

int array_size = cjson_getarraysize(course);

//迴圈獲取陣列元素的cjson物件

cjson* item = null;

for (int i = 0; i < array_size; i++)

//獲取scores鍵值的cjson物件。

scores = cjson_getobjectitem(root, "scores");

cjson* chinese = cjson_getobjectitem(scores, "chinese");

cjson* english = cjson_getobjectitem(scores, "english");

cjson* math = cjson_getobjectitem(scores, "math");

cjson* physics = cjson_getobjectitem(scores, "physics");

printf_s("----> chinese: %d\n", chinese->valueint);

printf_s("----> english: %d\n", english->valueint);

printf_s("----> math: %d\n", math->valueint);

printf_s("----> physics: %d\n", physics->valueint);

cjson_delete(root);

root = null;

while (1);}

springmvc支援json和jsonp型別資料

在使用springmvc開發rest介面的時候很方便,可以直接使用 responsebody註解,直接加在springmvc的控制器類的方法上,springmvc會直接為我們將返回的物件序列化成為json型別的資料,但是有時候有的介面呼叫方需要我們直接返回jsonp型別的資料,這時候可能就會需要我們...

JSON 和 JSON 的方法

json資料格式 只支援高版本瀏覽器,低版本使用json2.js json是什麼 json是一種長的物件的字串,它是一種 資料格式 一般由後端給的 比如 1,2,3,4 xml 也是資料格式長的像下面 柔絲json.parse json 把json格式轉成物件 注意 json格式必須為標準的json...

一 Json物件 Json陣列和Json字串

所謂字串 單引號或者雙引號引起來,是乙個string型別的字串 如下 var person json字串 最顯著的特徵 物件的值可以用 物件.屬性 進行訪問,如下 var person json物件 可以理解為是乙個json物件而 就表示包含兩個物件的json陣列 var str var strto...