JSON数据解析——jsoncpp源码编辑

版权所有,转载请注明:http://blog.sina.com.cn/u/1978765352


由于工作中需要用到JSON数据,所以解析JSON数据就成了一个非常重要的工作内容。
其实用C++解析数据是很繁杂的任务,涉及到很多的数据处理和数据安全问题。好在网上提供了很多的JSON解析库,其中不乏很优秀的,出于效率,还是使用这些第三方的库比较好。我使用的是jsoncpp,这是一个开源的C++的JSON解析库,我将写两篇博文来介绍如何使用jsoncpp,而本文将介绍jsoncpp的添加。
首先,需要在网上下载jsoncpp的程序文件,这里提供链接,无毒无公害,请放心使用:http://www.oschina.net/p/jsoncpp/ (我使用的是jsoncpp-src-0.6.0-rc2)【C++】JSON数据解析鈥斺攋soncpp的使用(上)

1、下载完成后解压,可以看到程序的目录




2、打开makefiles文件夹,里面是jsoncpp和两个test的工程,打开工程(我使用的编译环境是vs2008,原文件应该是vs2005下开发的,无碍,直接转换下就好了),红色方框部分就是jsoncpp的项目


3、编译jsoncpp项目,然后在程序目录的build文件夹下可以找到编译好的lib文件,debug和release下的文件名不同,debug下是json_vc71_libmtd.lib,release下是json_vc71_libmt.lib。
4、想要在我们的项目中加入jsoncpp库也很简单,只要把jsoncpp的项目的.h文件和.lib文件加入到我们的项目中就可以了,注意引用目录,然后编译看看有没有错误。
5、Debug模式下编译,应该是没有错误的,如果出现链接错误或者是找不到文件,请查看文件路径设置对不对。需要注意的是Release模式下编译,有可能会出现fatal error C1083: 无法打开编译器生成的文件:“../../build/vs71/release/lib_json\json_writer.asm”: No such file or directory ,我也出现了这个错误。后来在网上查找原因,好像是jsoncpp的项目编译设置的问题。需要在jsoncpp的项目设置中做如下修改:




6、替换新编译完成的lib文件,再编译,就可以通过了,呵呵。【C++】JSON数据解析鈥斺攋soncpp的使用(上)


当然,如果你直接把jsoncpp的项目文件全部拷贝到自己的项目中,也是可以的,但是出于项目管理考虑,还是使用lib比较好。【C++】JSON数据解析鈥斺攋soncpp的使用(上)


最后还要说下,下载来的程序使用的是win32的SDK,如果要在其他平台使用,最好是重新建立需要的平台项目(如WinCE),然后把jsoncpp的makefiles文件夹下的文件全部添加到新项目中,再编译。
下篇博文,将要介绍的是jsoncpp解析JSON数据的方法,敬请关注。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要在C++中使用jsoncpp库进行JSON解析,你需要按照以下步骤进行设置: 1. 下载jsoncpp库:你可以从jsoncpp的GitHub仓库下载源代码:https://github.com/open-source-parsers/jsoncpp 2. 构建和安装库:根据你的操作系统和编译器,按照jsoncpp的文档说明来构建和安装库。 3. 在你的项目中包含头文件:在你的C++代码中,包含jsoncpp的头文件: ```cpp #include <json/json.h> ``` 4. 解析JSON数据:使用以下代码片段来解析JSON数据: ```cpp // JSON字符串 std::string jsonString = "{\"name\":\"John\",\"age\":30,\"city\":\"New York\",\"cars\":[\"Ford\",\"BMW\",\"Fiat\"]}"; // 创建Json::Value对象 Json::Value root; // 解析JSON字符串 Json::CharReaderBuilder reader; std::istringstream iss(jsonString); std::string errors; Json::parseFromStream(reader, iss, &root, &errors); // 获取字段的值 std::string name = root["name"].asString(); int age = root["age"].asInt(); std::string city = root["city"].asString(); const Json::Value cars = root["cars"]; for (unsigned int i = 0; i < cars.size(); ++i) { std::string car = cars[i].asString(); // 处理车辆信息 } ``` 在上面的示例中,我们首先创建一个Json::Value对象来存储解析后的JSON数据。然后,使用Json::CharReaderBuilder和std::istringstream来解析JSON字符串,并将结果存储到Json::Value对象中。之后,我们可以根据需要获取字段的值,将其转换为适当的类型。 请注意,上述示例仅演示了jsoncpp库的基本用法。你可以根据实际需求使用更多的jsoncpp函数和类来处理JSON数据。可以参考jsoncpp的文档和示例代码来了解更多详细用法。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值