日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > linux >内容正文

linux

Linux下Json库的编译及代码测试

發布時間:2025/7/25 linux 25 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Linux下Json库的编译及代码测试 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

一、Json基礎

???JSON(JavascriptObject Notation)是一種輕量級的數據交換語言,以文字為基礎,且易于讓人閱讀。盡管JSON是在Javascript的一個子集,但JSON是獨立于語言的文本格式,并且采用了類似于C語言家族的一些習慣。JSON建構有兩種結構:

1) 名稱/對的集合(A collection of name/value pairs)。不同的語言中,它被理解為對象(object),記錄(record),結構(struct),字典(dictionary),哈希表(hash table),有鍵列表(keyed list),或者關聯數組 (associative array)。

? ? ? ?2)值的有序列表(An ordered list of values)。在大部分語言中,它被理解為數組(array)。

? ? 例如,現創建一個新的 JavaScript 變量,然后將 JSON格式的數據字符串直接賦值給它

? ? varpeople = {

? ??? ??"programmers":[

? ??? ??? ??{"firstName": "Brett", "lastName":"McLaughlin","email": "aaaa" },

? ??? ??? ??{"firstName": "Jason","lastName":"Hunter", "email": "bbbb" },

? ??? ??? ??{"firstName": "Elliotte","lastName":"Harold", "email": "cccc" }

? ??? ??? ??],

? ??? ??"authors":[

? ??? ??? ??{"firstName": "Isaac", "lastName":"Asimov", "genre": "science fiction" },

? ??? ??? ??{"firstName": "Tad", "lastName":"Williams", "genre": "fantasy" },

? ??? ??? ??{"firstName": "Frank", "lastName":"Peretti", "genre": "christian fiction" }

? ??? ??? ??],

? ??? ??"musicians":[

? ??? ??? ??{"firstName": "Eric", "lastName":"Clapton", "instrument": "guitar" },

? ??? ??? ??{"firstName": "Sergei", "lastName":"Rachmaninoff", "instrument": "piano" }

? ??? ??]}

? ??這非常簡單;現在 people包含前面看到的 JSON 格式的數據。

?

二、編譯Json

? ??jsoncpp是一個c++封裝的json包,跨平臺支持windows、linux、unix等多系統。在windows 下面使用比較簡單,直接往vc里面添加項目就可以了。linux下面編譯需要使用到scons,scons是python工具,需要先安裝好python。

1.下載源碼包并解壓scons-2.2.0.tar.gz

? ??[root@localhost nfs]#tarxzf scons-2.2.0.tar.gz

? ??[root@localhostnfs]#cd scons-2.2.0

? ??[root@localhostscons-2.2.0]# ls

? ??? ??CHANGES.txt? MANIFEST??????????? README.txt?? sconsign.1???setup.cfg

? ??? ??engine??????os_spawnv_fix.diff? RELEASE.txt?scons-time.1? setup.py

? ??? ??LICENSE.txt? PKG-INFO??????????? scons.1????? script

2.設置環境變量(為scons-2.2.0的目錄)

? ??[root@localhost jsoncpp-src-0.5.0]#export MYSCONS=/work/nfs/scons-2.2.0

? ??[root@localhost jsoncpp-src-0.5.0]#export SCONS_LIB_DIR=$MYSCONS/engine

3.下載源碼包并解壓jsoncpp-src-0.5.0.tar.gz

? ??[root@localhost nfs]# tar xzfjsoncpp-src-0.5.0.tar.gz

? ??[root@localhostnfs]# cd jsoncpp-src-0.5.0

? ??[root@localhostjsoncpp-src-0.5.0]#ls

? ??? ??AUTHORS?? doxybuild.py?makefiles?????? scons-tools ?test

? ??? ??devtools? include??????makerelease.py? SConstruct?? version

? ??? ??doc?????? LICENSE?????? README.txt????? src

4.編譯

? ??[root@localhostjsoncpp-src-0.5.0]#python$MYSCONS/script/scons platform=linux-gcc

? ??[root@localhostjsoncpp-src-0.5.0]# ls include/json/???

? ??? ??autolink.h? features.h?json.h???value.h???????//頭文件

? ??? ??config.h??? forwards.h?reader.h? writer.h

? ??[root@localhostjsoncpp-src-0.5.0]#ls libs/linux-gcc-4.1.2/

? ??? ??libjson_linux-gcc-4.1.2_libmt.a? libjson_linux-gcc-4.1.2_libmt.so??//

?

三、測試

1.編寫json_test.cpp

?

#include<iostream>??

#include<string>????

#include"./json/json.h"??

using namespace std;?

?

int main(void)?

{?

?????? stringstrJson ="{\"key1\":\"value1\",\"array\":[{\"key2\":\"value2\",\"key3\":\"aa\"},{\"key2\":\"value3\",\"key3\":\"bb\"},{\"key2\":\"value4\",\"key3\":\"cc\"}]}";

?????? Json::Readerreader;

?????? Json::StyledWriterstyled_writer;

?????? Json::Valueval;

?????? if(!reader.parse(strJson,val))

????????????? return-1;

?????????????

?????? stringstr = val["key1"].asString();

?????? cout<< "key1:" << str << endl;

??????

?????? Json::Valueobj_array = val["array"];

?????? cout<< styled_writer.write(obj_array) << endl;

??????

?????? for(int i = 0; i < obj_array.size(); i++)

?????? {

????????????? str= obj_array[i]["key2"].asString();

????????????? cout<< "key2[" << i << "]:" << str<< endl;

?????????????

????????????? str= obj_array[i]["key3"].asString();

????????????? cout<< "key2[" << i << "]:" << str<< endl;

?????? }

?

?????? ?return 0;?

}??

?

2.創建符號鏈接

?? ?[root@localhost jsoncpp-src-0.5.0]#ln -s/work/nfs/jsoncpp-src-0.5.0/libs/linux-gcc-4.1.2/libjson_linux-gcc-4.1.2_libmt.so? /usr/local/lib/libjson.so

? ??[root@localhost jsoncpp-src-0.5.0]#/sbin/ldconfig ? //更新庫

3.編譯

???[root@localhost jsoncpp-src-0.5.0]#g++ json_test.cpp ?-ljson

4.運行程序

? ??[root@localhostjsoncpp-src-0.5.0]#./a.out

?

? ??? ??key1:value1

? ??? ??? ??[

? ??? ??? ????{

?? ??? ??? ??????"key2" : "value2",

? ??? ??? ???????"key3" : "aa"

?? ??? ??? ???},

?? ??? ??? ???{

?? ??? ??? ??????"key2" : "value3",

? ??? ??? ???????"key3" : "bb"

? ??? ??? ????},

? ??? ??? ????{

? ??? ??? ???????"key2" : "value4",

? ??? ??? ???????"key3" : "cc"

? ??? ??? ????}

? ??? ??]

?

? ??key2[0]:value2

? ??key2[0]:aa

? ??key2[1]:value3

? ??key2[1]:bb

? ??key2[2]:value4

? ??key2[2]:cc

?

轉載于:https://www.cnblogs.com/xinyuyuanm/archive/2013/03/25/2980399.html

總結

以上是生活随笔為你收集整理的Linux下Json库的编译及代码测试的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。