Jsoncpp使用詳解以及連結問題解決,jsoncpp使用詳解
JSON(JavaScript Object Notation) 是一種輕量級的資料交換格式。 易於人閱讀和編寫。同時也易於機器解析和產生。 它基於JavaScript Programming Language, Standard 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)。
這些都是常見的資料結構。事實上大部分現代電腦語言都以某種形式支援它們。這使得一種資料格式在同樣基於這些結構的程式設計語言之間交換成為可能。
使用JsonCpp步驟:
一、下載JsonCpp
大家可以從我的資源下載,也可以從官方下載
二、編譯Lib
大家用VS開啟\jsoncpp-src-0.5.0\jsoncpp-src-0.5.0\makefiles\vs71目錄下的工程檔案,然後編譯就可以產生相關的Lib庫(預設產生:json_vc71_libmt.lib)
三、建立另外一種工程,將json_vc71_libmt.lib庫添加到相關路徑,並設定相應的工程屬性;同時源碼如下:
//testjson
ifstream ifs; ifs.open("testjson.json"); assert(ifs.is_open()); Json::Reader reader; Json::Value root; if ((!reader.parse(ifs, root, false))) { return false; } std::string name = root["name"].asString(); int age = root["age"].asInt();
連結庫和添加標頭檔:
#pragma comment(lib, "json_vc71_libmt.lib")#include "../jsoncpp/include/json.h"#include<fstream>#include <cassert>using namespace std;
需要注意的是,我們在運行新工程可能出現下述錯誤:
問題一:error LINK2038:檢測到"RuntimeLibrary" 的不匹配項
解決方案:將新工程的工程編譯選項和jsoncpp工程的編譯選項設定為相同:
問題二:json_value.asm: No such file or directory
解決方案:將jsoncpp工程的編譯選項中的回報編程式輸出設定為無列表:
參考部落格:
Jsoncpp使用詳解以及連結問題解決
C++ 解析Json——jsoncpp
Jsoncpp的使用
著作權聲明:本文為博主原創文章,未經博主允許不得轉載。