嵌入式Linux系統jsoncpp的移植

jsoncpp是c++實現對JSON格式數據的構建和解析,如果我們的應用程序的主框架是c++寫的,那麼建議採用該開源庫;該開源庫同樣遵循MIT License,

通過github克隆倉庫下來:

git clone https://github.com/open-source-parsers/jsoncpp.git

代碼放在目錄:…\tutorials\Patchs\4. jsoncpp移植

project目錄中存放從該開源庫裁剪出來的源文件還有我們的應用:

builder.cpp   構建JSON數據。

parser.cpp    解析JSON數據。

1 創建JSON實例

json目錄中的json.h是最基礎的對外API,我們需要包含該頭文件;使用該開源庫需要有C++基礎,代碼如下:

編譯:

g++ -I. builder.cpp json_value.cpp json_reader.cpp json_writer.cpp -o json_builder

運行結果和用cJSON庫結果一致。

2 解析JSON實例

直接上代碼:

編譯運行:

g++ -I. parser.cpp json_value.cpp json_reader.cpp json_writer.cpp -o json_parser

結果和用cJSON庫是一致的。

jsoncpp函數分爲兩類,一種是取值的,一種是判斷類型的:

  1. // 轉換類型  
  2. Int asInt() const;  
  3. UInt asUInt() const;  
  4. Int64 asInt64() const;  
  5. UInt64 asUInt64() const;  
  6. LargestInt asLargestInt() const;  
  7. LargestUInt asLargestUInt() const;  
  8. float asFloat() const;  
  9. double asDouble() const;  
  10. bool asBool() const;  
  11. // 檢測類型  
  12. bool isNull() const;  
  13. bool isBool() const;  
  14. bool isInt() const;  
  15. bool isInt64() const;  
  16. bool isUInt() const;  
  17. bool isUInt64() const;  
  18. bool isIntegral() const;  
  19. bool isDouble() const;  
  20. bool isNumeric() const;  
  21. bool isString() const;  
  22. bool isArray() const;  
  23. bool isObject() const;  

具體需要根據實際的應用調用相應的API即可。

 

==================================================================================================================================

如果覺得對您有幫助並想進一步深入學習交流可以掃描以下微信二維碼或加入QQ羣:928840648

歡迎共同學習成長,有一羣愛學習的小夥伴一起勉勵!!一起加油!!也可點擊

 

筆者基於嵌入式系統框架內容如下整理編輯: