Json:下载、编译、示例、Jsoncpp,Windows

一、下载Jsoncpp

      1.1 文件名

            jsoncpp-src-0.5.0.tar.gz

      1.2 Jsoncpp下载地址

            http://sourceforge.net/projects/jsoncpp/

二、编译Jsoncpp

      2.1 下载,解压

            下载jsoncpp-src-0.5.0.tar.gz,解压缩到D:\。

      2.2 编译

            进入目录D:\jsoncpp-src-0.5.0\makefiles\vs71,打开jsoncpp.sln,编译。

      2.3 生成结果

            在目录D:\jsoncpp-src-0.5.0\build\vs71\debug\lib_json下,生成文件json_vc71_libmtd.lib。

三、Jsoncpp示例代码

      3.1 配置编译环境

            1. 将json_vc71_libmtd.lib,拷贝到当前工程下。

            2. 将D:\jsoncpp-src-0.5.0\include\json目录,拷贝到当前工程下。

      3.2 代码

 

  1. #include   
  2. #include   
  3. #include "../json/json.h"  
  4. using namespace std;  
  5.   
  6. #pragma comment(lib,"json_vc71_libmtd.lib")  
  7.   
  8. void main()  
  9. {  
  10.     ifstream ifs;  
  11.     ifs.open("test.json", ios::out|ios::in);  
  12.     if(!ifs.is_open())  
  13.     {  
  14.         cout<<"fail to open file."<<endl;  
  15.         return;  
  16.     }  
  17.   
  18.     Json::Reader reader;  
  19.     Json::Value root;  
  20.     if(!reader.parse(ifs, root))  
  21.     {  
  22.         cout<<"fail to parse."<<endl;  
  23.         return;  
  24.     }  
  25.   
  26.     string s_name;  
  27.     int i_age;  
  28.     for(int i=0; i
  29.     {  
  30.         s_name = root[i]["name"].asString();  
  31.         i_age = root[i]["age"].asInt();  
  32.   
  33.         cout<<"name:"<<s_name.c_str()<<", "<<"age:"<<i_age<<endl;  
  34.     }  
  35.   
  36.       
  37. }  
      3.3 json文件 与 生成结果

 

            1. json文件:[{"name":"kanguolai","age":25},{"name":"kanguoqu","age":18}]

            2. 生成结果:

            

四、错误处理

      4.1 编译Jsoncpp错误:

            1. 现象:C:\Program Files (x86)\MSBuild\Microsoft.Cpp\v4.0\Microsoft.CppCommon.targets(113,5): error MSB3073: 命令“D:\Installed software for develop\jsoncpp-src-0.5.0\makefiles\vs71\../../build/vs71/debug/test_lib_json\test_lib_json.exe
1>C:\Program Files (x86)\MSBuild\Microsoft.Cpp\v4.0\Microsoft.CppCommon.targets(113,5): error MSB3073: :VCEnd”已退出,代码为 9009。

            2.解决办法:Jsoncpp放置的目录路径中,不能包含空格。

      4.2 编译测试代码错误

            1. 现象: error LNK2005: "public: void __thiscall std::_Container_base12::_Orphan_all(void)" (?_Orphan_all@_Container_base12@std@@QAEXXZ) 已经在 msvcprtd.lib(MSVCP100D.dll) 中定义。

                 等一系列的错误提示。

            2. 解决办法:属性 -->  C/C++ -->  代码生成 -->  运行库 将其中的 “多线程调试DLL(/MDd)” 改为 “多线程调试(/MTd)” 。

                最根本解决办法:在编译Jsoncpp工程前,将其所有工程,由 “多线程调试(/MTd)” 改为 “多线程调试DLL(/MDd)” 。



参考资料: 

      资料:http://blog.csdn.net/nana08/article/details/6918877

      资料与示例:http://www.cnblogs.com/kex1n/archive/2011/12/02/2272328.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值