1. 程式人生 > >C++ json類庫Jsoncpp的使用

C++ json類庫Jsoncpp的使用

JSON(JavaScript Object Notation) 是一種輕量級的資料交換格式。 易於人閱讀和編寫。同時也易於機器解析和生成。 它基於JavaScript Programming LanguageStandard ECMA-262 3rd Edition - December 1999的一個子集。 JSON採用完全獨立於語言的文字格式,但是也使用了類似於C語言家族的習慣(包括C, C++, C#, Java, JavaScript, Perl, Python等)。 這些特性使JSON成為理想的資料交換語言。

JSON建構於兩種結構:

  • “名稱/值”對的集合(A collection of name/value pairs)。不同的語言中,它被理解為物件(object)
    ,紀錄(record),結構(struct),字典(dictionary),雜湊表(hash table),有鍵列表(keyed list),或者關聯陣列 (associative array)。
  • 值的有序列表(An ordered list of values)。在大部分語言中,它被理解為陣列(array)。

這些都是常見的資料結構。事實上大部分現代計算機語言都以某種形式支援它們。這使得一種資料格式在同樣基於這些結構的程式語言之間交換成為可能。

JSON具有以下這些形式:

物件是一個無序的“‘名稱/值’對”集合。一個物件以“{”(左括號)開始,“}”(右括號)結束。每個“名稱”後跟一個“:”(冒號);“‘名稱/值’ 對”之間使用“,”(逗號)分隔。

陣列是值(value)的有序集合。一個數組以“[”(左中括號)開始,“]”(右中括號)結束。值之間使用“,”(逗號)分隔。

值(value)可以是雙引號括起來的字串(string)、數值(number)、truefalse、 null、物件(object)或者陣列(array)。這些結構可以巢狀。

字串(string)是由雙引號包圍的任意數量Unicode字元的集合,使用反斜線轉義。一個字元(character)即一個單獨的字串(character string)。

字串(string)與C或者Java的字串非常相似。

數值(number

)也與C或者Java的數值非常相似。除去未曾使用的八進位制與十六進位制格式。除去一些編碼細節。

空白可以加入到任何符號之間。 以下描述了完整的語言。

C++要使用JSON來解析資料,一般採用jsoncpp

下載了之後,解壓,然後開啟\jsoncpp-src-0.5.0\jsoncpp-src-0.5.0\makefiles\vs71

下的工程檔案,進行編譯連結就可以得到一個靜態連結庫json.lib

要用jsoncpp只需要將這個lib檔案拷貝到你的工程目錄下,並將jsoncpp-src-0.5.0\jsoncpp-src-0.5.0\include\json

複製到工程目錄下,然後將這些標頭檔案加到工程中去就可以了。

例子:

{
"name" : "小樓一夜聽春雨",
"age" : 27
}

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 #pragma comment(lib, "json_mtd.lib") #include <fstream> #include <cassert> #include "json/json.h" int main() { ifstream ifs; ifs.open("testjson.json"); assert(ifs.is_open()); Json::Reader reader; Json::Value root; if (!reader.parse(ifs, root, false)) { return -1; } std::string name = root["name"].asString(); int age = root["age"].asInt(); std::cout<<name<<std::endl; std::cout<<age<<std::endl; return 0; }

[{"name" : "xiaoy", "age" :17} , {"name" : "xiaot", "age" : 20}]

1 2 3 4 5 6 7

相關推薦

C++ jsonJsoncpp的使用

JSON(JavaScript Object Notation) 是一種輕量級的資料交換格式。 易於人閱讀和編寫。同時也易於機器解析和生成。 它基於JavaScript Programming Language, Standard ECMA-262 3rd Edition - December 1

兩款JSONJackson與JSON-lib的性能對比(新增第三款測試)

border word ogg 收藏 一個 gen 每次 應用 googl 本篇文章主要介紹了"兩款JSON類庫Jackson與JSON-lib的性能對比(新增第三款測試)",主要涉及到兩款JSON類庫Jackson與JSON-lib的性能對比(新增第三款測試)方面的內容,

再測Golang JSON

dom dev .config ble golang 場景 mpat 屬於 name 寫項目一直需要進行序列化,聽到了,也看到了很多同學老師對各個golang的json庫進行測評。那本人為什麽還要繼續進行這一次測評呢?因為實踐過的知識最有說服力,也是屬於自己的,我也希望看到

C++經典(C++開發必看)

並且 audio 種類 stlport 極致 chilkat 很多 方案 科學計算 現實中,C++的庫門類繁多,解決的問題也是極其廣泛,庫從輕量級到重量級的都有。本文為你介紹了十一種類庫,有我們常見的,也有不常見的,一起來看。 如果你有一定的C基礎可能學起來比較容易些,

C++ log4cplus 的封裝

pat get 全局 attach ins 日誌 erro def ring 對 log4cplus 庫的封裝,修改自網路 LogUtils.h /* * LogUtils.h * * Created on: 2018年8月9日 * Author: o

java 呼叫c語言

1:生成class檔案 2:在專案src下執行 : javah -classpath  F:/Jama-1.0.3.jar;. -jni com.test.MatrixCalculate 生成.h檔案 3:由c語言生成dll或者so檔案 4:java呼叫 static{

Java的4種Json介紹

JSON(JavaScript Object Notation) 是一種輕量級的資料交換格式。 易於人閱讀和編寫。同時也易於機器解析和生成。 它基於JavaScript Programming Language, Standard ECMA-262 3rd Edition

C# 讀取自己的App.config檔案

首先  類庫自己的App.config檔案會被編譯為  xxx.dll.config 其中 xxx就是類庫的名稱 configPath //  獲取類庫配置檔案的絕對路徑 public static string configPath = System.Re

C#通用--加密解密

//類名:EcanSecurity//作用:加密解密//作者:劉典武//時間:2010-12-01using System;using System.Collections.Generic;using System.Text;using System.Security.Cryptography;using S

C#讀取下XML檔案

private static Hashtable GetResource()         {             String projectName = Assembly.GetExecutingAssembly().GetName().Name.ToString

C++經典

http://blog.csdn.net/qq_34882983/article/details/53822728 現實中,C++的庫門類繁多,解決的問題也是極其廣泛,庫從輕量級到重量級的都有。本文為你介紹了十一種類庫,有我們常見的,也有不常見的,一起來看。 如果你有一定

JSONJackson優雅序列化Java列舉

![](https://img2020.cnblogs.com/other/1739473/202006/1739473-20200622091327990-378502082.png) ## 1. 前言 在**Java**開發中我們為了避免過多的魔法值,使用列舉類來封裝一些靜態的狀態程式碼。但是在將這些

C++通過jsoncpp讀寫JSON檔案-json用法詳解

介紹: JSON 是常用的資料的一種格式,各個語言或多或少都會用的JSON格式。 JSON是一個輕量級的資料定義格式,比起XML易學易用,而擴充套件功能不比XML差多少,用之進行資料交換是一個很好的選擇。JSON的全稱為:JavaScript Object Notation ,顧名思義,JSON是用於標記

C++通過jsoncpp讀寫JSON文件-json用法詳解

null 鏈接 reading port 舉例 格式 www. json格式 eno 介紹: JSON 是常用的數據的一種格式,各個語言或多或少都會用的JSON格式。 JSON是一個輕量級的數據定義格式,比起XML易學易用,而擴展功能不比XML差多少,用之進行數據交換是一個

c++好用的json jsoncpp

官網http://open-source-parsers.github.io/jsoncpp-docs/doxygen/index.html 去github下clone下程式碼,直接cmake .. 然後make -j8 sudo make install即可! 使用標

C# Json反序列化 數據協定型 無法反序列化 由於未找到必需的數據成員

val object test 信息 span 屬性表 ble details space 背景今天在使用:C# Json 序列化與反序列化 反序列化的時候出現了以下的錯誤信息。System.Runtime.Serialization.SerializationExce

[轉]C# 將的內容寫成JSON格式的字符串

json格式 true namespace reading bject mar ole 程序代碼 img 將類的內容寫入到JSON格式的字符串中 本例中建立了Person類,賦值後將類中內容寫入到字符串中 運行本代碼需要添加引用動態庫Newtonsoft.Json 程

SQL SERVER C#數據操作

dbhelper dbn ati c# als 實現 一個 copy apps using System;using System.Collections;using System.Collections.Specialized;using System.Data;usin

C/C++使用libcurl發送http請求(get和post可以用於請求html信息,也可以請求xml和json等串)

網絡連接 get 編譯 eas views vs2015 return tar linux C++要實現http網絡連接,需要借助第三方庫,libcurl使用起來還是很方便的 環境:win32 + vs2015 如果要在Linux下使用,基本同理 1,下載

C#導入c++ dll報找不到dll文件 masm32調用c++

dll sca masm32 ++ 時也 類型 dumpbin exports 另一個   最近需要在C#下調用一個c++ dll庫,不管怎樣dllimport就是報錯找不到該dll文件,路徑、函數名稱、參數、dllimport參數逐個檢查確認無誤也無濟於事,無奈想用其他語