當前位置:首頁 » 編程軟體 » vs編譯jsoncpp

vs編譯jsoncpp

發布時間: 2022-08-07 10:49:06

❶ jsoncpp閱讀文件不正確問題,怎麼解決

一、下載JsonCpp
大家可以從我的資源下載,也可以從官方下載
二、編譯Lib
大家用VS打開\jsoncpp-src-0.5.0\jsoncpp-src-0.5.0\makefiles\vs71目錄下的工程文件,然後編譯就可以生成相關的Lib庫(默認生成:json_vc71_libmt.lib)

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

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

❸ vs2017使用json.hpp文件

VS2017里新建一個空的控制台程序(用作測試jsoncpp是否可用),名為。 TestJSON解壓下載好的文件。jsoncpp-src-0.5.0.tar.gz將 jsoncpp-src-0.5.0include 目錄下的json文件夾拷貝至 TestJSON 工程目錄下將 jsoncpp-src-0.5.0srclib_json 目錄下的所有.h, .cpp 文件全部拷貝至 TestJSON 工程目錄下在VS201里引入工程目錄下剛剛從 jsoncpp-src-0.5.0 導入的文件,如圖1在VS2010里新建main.cpp來測試jsoncpp是否可用。
Visual Studio 2017是微軟於2017年3月8日正式推出的新版本,是迄今為止最具生產力的Visual Studio版本。其內建工具整合了NET Core、Azure應用程序、微服務(microservices)、Docker容器等所有內容。

❹ 怎麼在VS2008里使用jsoncpp

C++要使用JSON來解析數據,一般採用jsoncpp.

下載jsoncpp後,按ReadMe文檔的說法是要先安裝的,但是安裝比較麻煩。然而事實上,我們並不需要安裝,就可以直接使用。

方法一:直接拷貝源文件。這個方法比較簡單,但不推薦,因為不便於項目管理。

  1. VS2008里新建一個空的控制台程序(用作測試jsoncpp是否可用),名為: TestJSON

  2. 解壓下載好的文件:jsoncpp-src-0.5.0.tar.gz

  3. 將 jsoncpp-src-0.5.0include 目錄下的json文件夾拷貝至 TestJSON 工程目錄下

  4. 將jsoncpp-src-0.5.0srclib_json 目錄下的所有.h, .cpp文件全部拷貝至 TestJSON 工程目錄下

  5. 在VS2008里引入工程目錄下剛剛從jsoncpp-src-0.5.0 導入的文件,如圖1

  6. 在VS2008里新建main.cpp來測試jsoncpp是否可用。代碼見文章末尾main.cpp


方法二:使用靜態鏈接庫

  1. VS2008里新建一個空的控制台程序(用作測試jsoncpp是否可用),名為: TestJSON

  2. 解壓下載好的文件:jsoncpp-src-0.5.0.tar.gz

  3. 利用VS2008打開jsoncpp-src-0.5.0makefilesvs71目錄下的jsoncpp.sln,會出現三個Project:jsontest,lib_json,test_lib_json

  4. 在lib_json上 右擊-->Properties-->Configuration Properties-->C/C++-->Code Generation,注意右側的Runtime Library的內容,如圖2,看完箭頭所指的東西就可以點確定,關掉屬性頁。

  5. 編譯lib_json,顯示編譯成功後,在jsoncpp-src-0.5.0uildvs71debuglib_json目錄下會生成一個json_vc71_libmtd.lib,將這個lib拷貝至TestJSON工程目錄下。

  6. 將jsoncpp-src-0.5.0includejson目錄下的所有.h文件拷貝至TestJSON工程目錄下,並在工程Header Files引入.

  7. 將方法一里的main.cpp添加到工程中,並在工程名上 右擊-->Properties-->Configuration Properties-->C/C++-->Code Generation, 將Runtime Library改成圖2箭頭所示內容。

  8. 在工程名上右擊-->Properties-->Configuration Properties-->Linker-->Input, 在Additional Dependencies里填寫json_vc71_libmtd.lib,然後確定,編譯就行了。


/* 測試jsoncpp的使用
*/

#include<iostream>
#include"json/json.h"

usingnamespacestd;
usingnamespaceJson;//json的命名空間

intmain()
{
/*JSONDATAasfollowing://一個json類型的數據
{
"test:5
}*/

stringtest="{"test":5}";//保存上文的json類型的數據

//以下涉及json的操作,將在後文中涉及,此處為簡單應用,不解釋,你懂的
Readerreader;
Valuevalue;

if(reader.parse(test,value))
{
inti=0;

if(!value["test"].isNull())
{
i=value["test"].asInt();
cout<<i<<endl;
}
}

return0;
}

❺ jsoncpp和rapidjson哪個好用

程序員的秘訣是:編程、編程、再編程。


  • 簡單性

    真的對這個問題一竅不通,但是專人說:Rapidjson是全部都在第一個總文件里,jsoncpp要求您構建或編譯一個庫;但rapidjson的一些介面不全,只提供了一層一層的這種解析方式,不能將某一層一次讀出來,實際用的時候,要簡單封裝一下,不然代碼量會很大。


  • 總結

    其實這種類似程序的東西我真的毫無涉獵,不過以後可以嘗試看看。這個庫使用了大量c++ 11標准元素,並且庫的設計也符合一些STL標准,可配置性比較強;單文件方式,引用也比較方便;使用上,也有其獨到的地方,更接近JSON的本質;此外性能上還是不錯的,只是比rapidjson差,比libjson,jsoncpp之流還是強了不少

❻ jsoncpp問題

放到你的工程里,相當於你的工程額外多了一個cpp文件,和兩個h文件,如果你的工程僅有一個main.cpp,那就是兩個cpp和兩個h文件,組成了你這個工程。

❼ C++ json解析

C++ 解析Json——jsoncpp
JSON(JavaScript Object Notation) 是一種輕量級的數據交換格式,和xml類似,本文主要對VS2008中使用Jsoncpp解析json的方法做一下記錄。
Jsoncpp是個跨平台的開源庫,下載地址:http://sourceforge.net/projects/jsoncpp/,我下載的是v0.5.0,壓縮包大約104K。

方法一:使用Jsoncpp生成的lib文件
解壓上面下載的Jsoncpp文件,在jsoncpp-src-0.5.0/makefiles/vs71目錄里找到jsoncpp.sln,用VS2008版本編譯,默認生成靜態鏈接庫。 在工程中引用,只需要包含include/json下的頭文件及生成的.lib文件即可。
如何包含lib文件:在.cpp文件中#pragma comment(lib."json_vc71_libmt.lib"),在工程屬性中Linker下Input中Additional Dependencies寫入lib文件名字(Release下為json_vc71_libmt.lib,Debug為json_vc71_libmtd.lib)

注意:Jsoncpp的lib工程編譯選項要和VS工程中的編譯選項保持一致。如lib文件工程編譯選項為MT(或MTd),VS工程中也要選擇MT(或MTd),否則會出現編譯錯誤問題,debug和release下生成的lib文件名字不同,注意不要看錯了,當成一個文件來使用(我就犯了這個錯誤)。

方法二:使用Jsoncpp包中的.cpp和.h文件
解壓上面下載的Jsoncpp文件,把jsoncpp-src-0.5.0文件拷貝到工程目錄下,將jsoncpp-src-0.5.0\jsoncpp-src-0.5.0\include\json和jsoncpp-src-0.5.0\jsoncpp-src-0.5.0\src\lib_json目錄里的文件包含到VS工程中,在VS工程的屬性C/C++下General中Additional Include Directories包含頭文件目錄.\jsoncpp-src-0.5.0\include。在使用的cpp文件中包含json頭文件即可,如:#include "json/json.h"。將json_reader.cpp、json_value.cpp和json_writer.cpp三個文件的Precompiled Header屬性設置為Not Using Precompiled Headers,否則編譯會出現錯誤。

jsoncpp 使用詳解
jsoncpp 主要包含三種類型的 class:Value、Reader、Writer。jsoncpp 中所有對象、類名都在 namespace Json 中,包含 json.h 即可。
Json::Value 只能處理 ANSI 類型的字元串,如果 C++ 程序是用 Unicode 編碼的,最好加一個 Adapt 類來適配。

下面是從網上找的代碼示例:
1. 從字元串解析json

const char* str = "{\"uploadid\": \"UP000000\",\"code\": 100,\"msg\": \"\",\"files\": \"\"}";

Json::Reader reader;
Json::Value root;
if (reader.parse(str, root)) // reader將Json字元串解析到root,root將包含Json里所有子元素
{
std::string upload_id = root["uploadid"].asString(); // 訪問節點,upload_id = "UP000000"
int code = root["code"].asInt(); // 訪問節點,code = 100
}
2. 從文件解析json

int ReadJsonFromFile(const char* filename)
{
Json::Reader reader;// 解析json用Json::Reader
Json::Value root; // Json::Value是一種很重要的類型,可以代表任意類型。如int, string, object, array

std::ifstream is;
is.open (filename, std::ios::binary );
if (reader.parse(is, root, FALSE))
{
std::string code;
if (!root["files"].isNull()) // 訪問節點,Access an object value by name, create a null member if it does not exist.
code = root["uploadid"].asString();

code = root.get("uploadid", "null").asString();// 訪問節點,Return the member named key if it exist, defaultValue otherwise.

int file_size = root["files"].size(); // 得到"files"的數組個數
for(int i = 0; i < file_size; ++i) // 遍歷數組
{
Json::Value val_image = root["files"][i]["images"];
int image_size = val_image.size();
for(int j = 0; j < image_size; ++j)
{
std::string type = val_image[j]["type"].asString();
std::string url = val_image[j]["url"].asString();
printf("type : %s, url : %s \n", type.c_str(), url.c_str());
}
}
}
is.close();

return 0;
}
3. 向文件中插入json

void WriteJsonData(const char* filename)
{
Json::Reader reader;
Json::Value root; // Json::Value是一種很重要的類型,可以代表任意類型。如int, string, object, array

std::ifstream is;
is.open (filename, std::ios::binary );
if (reader.parse(is, root))
{
Json::Value arrayObj; // 構建對象
Json::Value new_item, new_item1;
new_item["date"] = "2011-11-11";
new_item1["time"] = "11:11:11";
arrayObj.append(new_item); // 插入數組成員
arrayObj.append(new_item1); // 插入數組成員
int file_size = root["files"].size();
for(int i = 0; i < file_size; ++i)
root["files"][i]["exifs"] = arrayObj; // 插入原json中
std::string out = root.toStyledString();
// 輸出無格式json字元串
Json::FastWriter writer;
std::string strWrite = writer.write(root);
std::ofstream ofs;
ofs.open("test_write.json");
ofs << strWrite;
ofs.close();
}

is.close();
}

❽ VS2008下用C++解析JSON出現問題

應該還是你的lib庫沒有載入上導致的,看下頭文件路徑,lib庫路徑都設置了嗎?

❾ jsoncpp和rapidjson哪個好用

易用性:rapidjson是全頭文件包含的,jsoncpp需要你內置編譯或編譯成庫;但rapidjson的一些介面不全,只提供了一層一層的這種解析方式,不能將某一層一次讀出來,實際用的時候,要簡單封裝一下,不然代碼量會很大;
性能:rapidjson的性能是現在所有的c++ json解析庫裡面最高的,沒有之一;
容錯性:rapidjson只支持標準的 json 格式,很多人以為這個是缺點,我覺得這個是優點,大家都按照標准做,這是成本最低的;

rapidjson之前是託管在Googe Code上的,現在已遷移到GitHub,地址:miloyip/rapidjson · GitHub

熱點內容
ndklinux下載 發布:2024-04-20 21:05:22 瀏覽:565
王者榮耀解壓資源包97 發布:2024-04-20 20:46:10 瀏覽:396
蘋果手機沒有密碼怎麼打開 發布:2024-04-20 20:45:25 瀏覽:92
如何用濃硝酸配置百分之2的硝酸 發布:2024-04-20 20:44:39 瀏覽:796
微信商城java源碼下載 發布:2024-04-20 20:27:35 瀏覽:121
用友軟體sql 發布:2024-04-20 20:10:01 瀏覽:933
python倒著循環 發布:2024-04-20 20:09:52 瀏覽:759
雲伺服器遠程電腦版 發布:2024-04-20 20:09:12 瀏覽:259
ps資料庫 發布:2024-04-20 19:52:43 瀏覽:522
dpi的演算法 發布:2024-04-20 19:41:16 瀏覽:934