使用Jansson處理JSON


簡介

Jansson是一個用於解碼、編碼、操控JSON的C庫。其特性為:

  1. 簡單直觀的API和數據模型
  2. 沒有依賴項
  3. 完整的Unicode支持(UTF-8)
構建

Jansson使用cmake作為構建工具。可以執行下面的命令構建:

上述命令執行后,Jansson的頭文件和靜態庫被安裝到/home/alex/CPP/lib/jansson/2.9目錄

使用

這里我們創建一個CMake工程:

解碼JSON

下面的代碼展示了如何把字符串解碼為json_t結構:

運行上述代碼后輸出:

編碼JSON

下面的代碼展示了如何把json_t結構編碼為字符串:

運行上述代碼后輸出:

打包JSON

下面的代碼展示了如何把零散數據打包(pack)為json_t結構:

可用的格式限定符如下表:

限定符 說明
s 將null結尾的UTF-8字符串轉換為JSON字符串
s? 和上面類似,但是如果位置參數是NULL則插入JSON null值
s# 對應兩個位置參數const char *, int,將指定長度的UTF-8緩沖轉換為JSON字符串
s% 和上面類似,只是未知參數類型為const char *, size_t
+ 把此位置參數連接到前一個位置參數后面
+# 和上面類似,接收位置參數const char *, int
+% 和上面類似,接收位置參數const char *, size_t
n 輸出null,不消耗位置參數 
轉換int為JSON布爾值
轉換int為JSON整數
轉換json_int_t為JSON整數
f 轉換double為JSON實數 
o 原樣插入json_t*結構
和上面類似,但是目標json_t的引用計數會增加
 o?     o? 類似上面兩個,但是當位置參數為NULL時插入null
[fmt] 使用內部的格式限定符構建一個JSON數組,fmt可以是任意符合要求的格式限定符序列
{fmt}  使用內部的格式限定符構建一個JSON對象,fmt可以是任意符合要求的格式限定符序列
解包JSON

下面的代碼展示了如何把json_t結構解包為零散數據: 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM