一、JSON庫的概述
JSON(JavaScript Object Notation)是一種輕量級的數據交換格式。它易於閱讀和編寫,同時也易於機器解析和生成。JSON採用完全獨立於語言的文本格式,但是也使用了類似於C語言家族的習慣(包括C, C++, C#, Java, JavaScript, Perl, Python等),這些特性使JSON成為理想的數據交換格式。
二、JSON庫的安裝和使用
在使用JSON時,需要使用 JSON 解析庫,此處我們介紹一下 JSON-C,它是一個非常輕量級的 C 庫,用於解析 JSON 數據並將 JSON 對象轉換為 C 對象。
JSON-C 的安裝參照以下步驟:
git clone https://github.com/json-c/json-c.git
cd json-c
sh autogen.sh
./configure
make
sudo make install
安裝完成後,就能夠開始寫 JSON 應用了。JSON-C 庫提供了一些函數來創建和訪問 JSON 對象和數組。創建一個 JSON 格式的字符串非常容易,以下是一個簡單的例子:
#include <json-c/json.h>
int main()
{
json_object * jobj1 = json_object_new_string("foo");
json_object * jobj2 = json_object_new_string("bar");
json_object * jobj3 = json_object_new_object();
json_object_object_add(jobj3, "first", jobj1);
json_object_object_add(jobj3, "second", jobj2);
printf("%s\n", json_object_to_json_string(jobj3));
return 0;
}
這段代碼的輸出結果是:
{"second":"bar","first":"foo"}
三、JSON的數據類型
JSON 有四種基本的數據類型,包括字符串、數字、布爾和空值,此外,JSON 還包含兩種複合的數據類型:數組和對象。
1. 字符串
字符串是用雙引號括起來的,其中可以包含任何字符,包括特殊字符。以下是一個字符串的例子:
"Hello, world!"
2. 數字
數字可以是整數或小數,可以是正或負數。有些語言要求數字位於指數符號 “e” 或 “E” 的後面,指數前可以有一個正或負號,以下是數字的例子的示例:
25
25.00
-25
-25.00
2.5e+3
3. 布爾值
布爾值是 true 或 false,以下是布爾值的例子:
true
false
4. 空值
空值(null)只有一個值,即 null。以下是空值的例子:
null
5. 數組
數組是擁有零個或多個值的有序集合,其中每個值可以是任意類型,以下是數組的例子:
[
"Dove",
"Sparrow",
"Hawk"
]
6. 對象
對象是無序的鍵/值對的集合。對象中的每個鍵必須是字符串,而值可以是任意類型,以下是對象的例子:
{
"name": "Jack",
"age": 30,
"car": null
}
四、JSON的解析和生成
JSON 解析是指將 JSON 格式字符串轉換為程序內部的數據結構,如C語言中的數組和結構體,JSON 生成是指將程序內部數據結構轉換為 JSON 字符串。
1. JSON的解析
JSON-C 庫提供了 json_object_from_string 函數,它將 JSON 格式的字符串解析為 json_object 對象。以下是一個 JSON 解析的示例:
char *string = "{\"name\":\"Jack\",\"age\":30,\"car\":null}";
struct json_object *jobj = json_object_from_string(string);
2. JSON的生成
JSON-C 庫提供了 json_object_to_json_string 函數,它將一個 json_object 對象轉換為 JSON 格式的字符串。以下是一個 JSON 生成的示例:
json_object * jobj1 = json_object_new_string("foo");
json_object * jobj2 = json_object_new_string("bar");
json_object * jobj3 = json_object_new_object();
json_object_object_add(jobj3, "first", jobj1);
json_object_object_add(jobj3, "second", jobj2);
char *jsonStr = json_object_to_json_string(jobj3);
五、JSON的應用場景
JSON 應用非常廣泛,例如網絡接口傳輸、數據庫存儲、日誌記錄、配置文件等等。在 Web 開發中,JSON 與 AJAX(Asynchronous JavaScript and XML)技術一同使用,實現了頁面的無刷新異步更新。另外,在現代前端框架(如 React、Vue、Angular等)中,JSON 也被廣泛應用。
原創文章,作者:WTPFW,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/334558.html