jsoncpp源碼包含,jsoncpp解析json

本文目錄一覽:

VS2017編譯jsoncpp我出現的問題及怎麼解決的

文件-新建-項目-選c++-win32控制台程序-一步一步向下,完成新建後,再看解決方案管理器,樹狀結構最下面有個「源代碼」文件夾,如果裡面已經有cpp,就粘貼你的代碼,如果沒有,就右鍵-新建cpp源文件,再粘貼代碼,然後才能編譯。如果你都沒看到這些菜單的話說明你的vs2017沒裝c++相關的組件。

c++有類似java gson的開源代碼嗎?

有很多這種庫…如果數據格式固定,自己寫文本轉換也很塊。

json推薦的c++庫

JSONKit.

jsonme–.

ThorsSerializer.

JsonBox.

jvar.

rapidjson.

JSON for Modern C++.

ArduinoJson.

minijson.

jsoncons.

QJson.

jsoncpp.

CAJUN.

libjson.

nosjob.

JSON++.

JSON library for IoT.

qmjson.

JSON Support in Qt.

JsonWax for Qt.

JSON中數組該如何解析呢?c++中使用jsoncpp

JSON是一個輕量級的數據定義格式,比起XML易學易用,而擴展功能不比XML差多少,用之進行數據交換是一個很好的選擇

JSON的全稱為:JavaScript Object Notation ,顧名思義,JSON是用於標記javascript對象的,詳情參考。

本文選擇第三方庫JsonCpp來解析json,JsonCpp是比較出名的c++解析庫,在json官網也是首推的。

JsonCpp簡介

JsonCpp主要包含三種類型的class:Value Reader Writer。

jsoncpp中所有對象、類名都在namespace json中,包含json.h即可。

注意: Json::Value只能處理ANSI類型的字元串,如果C++程序使用Unicode編碼的,最好加一個Adapt類來適配。

下載和編譯

本文運行環境是: Redhat 5.5 + g++version 4.6.1 + GNU Make 3.81 + jsoncpp-0.5.0

下載地址是:

解壓之後得到jsoncpp-src-0.5.0文件夾,我們只需要jsoncpp的頭文件和cpp文件,其中jsonscpp的頭文件位於jsoncpp-src-0.5.0includejson,jsoncpp的cpp文件位於jsoncpp-src-0.5.0srclib_json。

這裡我列出我們的工作目錄:

jsoncpp/ //工作目錄

|– include //頭文件根目錄

|  |– json //json頭文件,對應jsoncpp-src-0.5.0includejson

|– src //cpp源碼文件根目錄

|– json //jsoncpp源碼文件,對應jsoncpp-src-0.5.0srclib_json

|– main.cpp //我們的主函數,調用jsoncpp的示例代碼

|– makefile //makefile,不用我們多說了吧,不懂請看我博客的makefile最佳實踐

反序列化Json對象

假設有一個json對象如下:

{ “name”: “json″, “array”: [ { “cpp”: “jsoncpp” }, { “java”: “jsoninjava” }, {  ”php”: “support” } ] }

我們要實現這個json的反序列號代碼如下:

voidreadJson() { usingnamespacestd; std::stringstrValue = “{\”name\”:\”json\”,\”array\”:[{\”cpp\”:\”jsoncpp\”},{\”java\”:\”jsoninjava\”},{\”php\”:\”support\”}]}”; Json::Reader reader; Json::Value value; if(reader.parse(strValue, value)) { std::stringout= value[“name”].asString(); std::cout outstd::endl; constJson::Value arrayObj = value[“array”];  for(unsigned inti = 0;i arrayObj.size(); i++) { if(!arrayObj[i].isMember(“cpp”)) continue; out= arrayObj[i][“cpp”].asString(); std::cout out; if(i != (arrayObj.size() – 1)) std::cout std::endl;  } } }

序列化Json對象

voidwriteJson() { usingnamespacestd; Json::Value root; Json::Value arrayObj; Json::Value item; item[“cpp”] = “jsoncpp”; item[“java”] = “jsoninjava”; item[“php”] = “support”; arrayObj.append(item); root[“name”] = “json”; root[“array”] = arrayObj; root.toStyledString(); std::stringout= root.toStyledString(); std::cout outstd::endl;  }

從源碼構建deb包

以jsoncpp為例,從源碼構建deb包

deb包是linux某些發行版本的一種安裝包。

deb包的包含2部分:

下面主要介紹control文件內容:

需要安裝到系統的文件,一般主要是etc、usr等

構建deb包之前,需要先根據源碼編譯jsoncpp的動態庫文件(下面只編譯動態庫)

至此,jsoncpp的動態庫和頭文件安裝到jsoncpp_install

至此,deb包構建完成,可以通過下面指令查看其中deb包的內容

安裝完成後,可以通過下面查看安裝了哪些內容

至此,deb包構建完成,構建的腳本如下:

jsoncpp和rapidjson哪個好用

rapidjson介面設計的不好,不好用,雖然只需要包含頭文件,另外主要也是用了其他內建json類型的語言給慣壞了,jsoncpp要編譯成庫就更加不方便了。最近工作需要用json,github上找了下,這個nlohmann/json好,只需要一個hpp文件,介面設計的比較易用,整體評價也不錯,Linux下面gcc要4.9

C++ JsonCpp如何獲取數據

JSON是一個輕量級的數據定義格式,比起XML易學易用,而擴展功能不比XML差多少,用之進行數據交換是一個很好的選擇

JSON的全稱為:JavaScript Object Notation ,顧名思義,JSON是用於標記javascript對象的,詳情參考

選擇第三方庫JsonCpp來解析json,JsonCpp是比較出名的c++解析庫,在json官網也是首推的。

JsonCpp簡介

JsonCpp主要包含三種類型的class:Value Reader Writer。

jsoncpp中所有對象、類名都在namespace json中,包含json.h即可。

注意: Json::Value只能處理ANSI類型的字元串,如果C++程序使用Unicode編碼的,最好加一個Adapt類來適配。

下載和編譯

本文運行環境是: Redhat 5.5 + g++version 4.6.1 + GNU Make 3.81 + jsoncpp-0.5.0

下載地址是:

解壓之後得到jsoncpp-src-0.5.0文件夾,我們只需要jsoncpp的頭文件和cpp文件,其中jsonscpp的頭文件位於jsoncpp-src-0.5.0includejson,jsoncpp的cpp文件位於jsoncpp-src-0.5.0srclib_json。

這裡我列出我們的工作目錄:

jsoncpp/ //工作目錄

|– include //頭文件根目錄

|  |– json //json頭文件,對應jsoncpp-src-0.5.0includejson

|– src //cpp源碼文件根目錄

|– json //jsoncpp源碼文件,對應jsoncpp-src-0.5.0srclib_json

|– main.cpp //我們的主函數,調用jsoncpp的示例代碼

|– makefile //makefile,不用我們多說了吧,不懂請看我博客的makefile最佳實踐

反序列化Json對象

假設有一個json對象如下:

{ “name”: “json″, “array”: [ { “cpp”: “jsoncpp” }, { “java”: “jsoninjava” }, {  ”php”: “support” } ] }

我們要實現這個json的反序列號代碼如下:

voidreadJson() { usingnamespacestd; std::stringstrValue = “{\”name\”:\”json\”,\”array\”:[{\”cpp\”:\”jsoncpp\”},{\”java\”:\”jsoninjava\”},{\”php\”:\”support\”}]}”; Json::Reader reader; Json::Value value; if(reader.parse(strValue, value)) { std::stringout= value[“name”].asString(); std::cout outstd::endl; constJson::Value arrayObj = value[“array”];  for(unsigned inti = 0;i arrayObj.size(); i++) { if(!arrayObj[i].isMember(“cpp”)) continue; out= arrayObj[i][“cpp”].asString(); std::cout out; if(i != (arrayObj.size() – 1)) std::cout std::endl;  } } }

序列化Json對象

voidwriteJson() { usingnamespacestd; Json::Value root; Json::Value arrayObj; Json::Value item; item[“cpp”] = “jsoncpp”; item[“java”] = “jsoninjava”; item[“php”] = “support”; arrayObj.append(item); root[“name”] = “json”; root[“array”] = arrayObj; root.toStyledString(); std::stringout= root.toStyledString(); std::cout outstd::endl;  }

原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/290697.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
小藍的頭像小藍
上一篇 2024-12-24 13:03
下一篇 2024-12-24 13:13

相關推薦

  • 雲智直聘 源碼分析

    本文將會對雲智直聘的源碼進行分析,包括前端頁面和後端代碼,幫助讀者了解其架構、技術實現以及對一些常見的問題進行解決。通過本文的閱讀,讀者將會了解到雲智直聘的特點、優勢以及不足之處,…

    編程 2025-04-29
  • JSON的MD5

    在Web開發過程中,JSON(JavaScript Object Notation)是最常用的數據格式之一。MD5(Message-Digest Algorithm 5)是一種常用…

    編程 2025-04-29
  • 使用Java將JSON寫入HDFS

    本篇文章將從以下幾個方面詳細闡述Java將JSON寫入HDFS的方法: 一、HDFS簡介 首先,先來了解一下Hadoop分散式文件系統(HDFS)。HDFS是一個可擴展性高的分散式…

    編程 2025-04-29
  • Python網站源碼解析

    本文將從多個方面對Python網站源碼進行詳細解析,包括搭建網站、數據處理、安全性等內容。 一、搭建網站 Python是一種高級編程語言,適用於多種領域。它也可以用於搭建網站。最常…

    編程 2025-04-28
  • 如何使用Newtonsoft datatable轉Json

    Newtonsoft DataTable 是一個基於.NET的JSON框架,也是一個用於序列化和反序列化JSON的強大工具。 在本文中,我們將學習如何使用Newtonsoft Da…

    編程 2025-04-28
  • 源碼是什麼

    源碼是一段計算機程序的原始代碼,它是程序員所編寫的可讀性高、理解性強的文本。在計算機中,源碼是指編寫的程序代碼,這些代碼按照一定規則排列,被計算機識別並執行。 一、源碼的組成 源碼…

    編程 2025-04-27
  • JPRC – 輕鬆創建可讀性強的 JSON API

    本文將介紹一個全新的 JSON API 框架 JPRC,通過該框架,您可以輕鬆創建可讀性強的 JSON API,提高您的項目開發效率和代碼可維護性。接下來將從以下幾個方面對 JPR…

    編程 2025-04-27
  • Go源碼閱讀

    Go語言是Google推出的一門靜態類型、編譯型、並髮型、語法簡單的編程語言。它因具有簡潔高效,內置GC等優秀特性,被越來越多的開發者所鍾愛。在這篇文章中,我們將介紹如何從多個方面…

    編程 2025-04-27
  • Python存為JSON的方法及實例

    本文將從以下多個方面對Python存為JSON做詳細的闡述。 一、JSON簡介 JSON(JavaScript Object Notation)是一種輕量級的數據交換格式,易於人閱…

    編程 2025-04-27
  • 使用Python獲取JSON並解析

    本文將介紹如何使用Python獲取JSON數據並解析相關內容。通過使用Python的第三方庫,我們可以輕鬆地處理JSON數據,包括讀取、提取和操作JSON數據。 一、獲取JSON數…

    編程 2025-04-27

發表回復

登錄後才能評論