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的使用

版权声明:本文为博主原创文章,未经博主允许不得转载。

时间: 2024-11-08 18:40:20

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等). 这些特

linux screen命令详解和常见问题解决

一.背景 系统管理员经常需要SSH 或者telent 远程登录到Linux 服务器,经常运行一些需要很长时间才能完成的任务,比如系统备份.ftp 传输等等.通常情况下我们都是为每一个这样的任务开一个远程终端窗口,因为它们执行的时间太长了.必须等待它们执行完毕,在此期间不能关掉窗口或者断开连接,否则这个任务就会被杀掉,一切半途而废了. 二.简介 GNU Screen是一款由GNU计划开发的用于命令行终端切换的自由软件.用户可以通过该软件同时连接多个本地或远程的命令行会话,并在其间自由切换. GNU

centos6安装GitLab全程详解和常见问题解决

GitLab,是一个使用 Ruby on Rails 开发的开源应用程序,与Github类似,能够浏览源代码,管理缺陷和注释,非常适合在团队内部使用. 官方只提供了Debian/Ubuntu系统下的安装说明文档,如果需要在centos下安装,可以参考这篇:https://github.com/gitlabhq/gitlab-recipes/tree/master/install/centos,笔者依照这篇文章的说明,成功的在centos系统上安装了gitlab,分享一下自己的安装过程和碰到的问题

【转】escape()、encodeURI()、encodeURIComponent()区别详解

escape().encodeURI().encodeURIComponent()区别详解 原文链接:http://www.cnblogs.com/tylerdonet/p/3483836.html JavaScript中有三个可以对字符串编码的函数,分别是: escape,encodeURI,encodeURIComponent,相应3个解码函数:unescape,decodeURI,decodeURIComponent . 下面简单介绍一下它们的区别 1 escape()函数 定义和用法 e

【转】Apache 的 httpd.conf 配置详解

Apache 的 httpd.conf 配置详解 原文链接 http://www.php100.com/html/webkaifa/apache/2009/0418/1192.html ServerRoot /usr/local ServerRoot用于指定守护进程httpd的运行目录,httpd在启动之后将自动将进程的当前目录改变为这个目录,因此如果设置文件中指定的文件或目录是相对路径,那么真实路径就位于这个ServerR oot定义的路径之下. ScoreBoardFile /var/run

【转】web.xml 中的listener、 filter、servlet 加载顺序及其详解

web.xml 中的listener. filter.servlet 加载顺序及其详解 原文链接 http://www.cnblogs.com/JesseV/archive/2009/11/17/1605015.html 在项目中总会遇到一些关于加载的优先级问题,近期也同样遇到过类似的,所以自己查找资料总结了下,下面有些是转载其他人的,毕竟人家写的不错,自己也就不重复造轮子了,只是略加点了自己的修饰. 首先可以肯定的是,加载顺序与它们在 web.xml 文件中的先后顺序无关.即不会因为 filt

Unity之粒子特效参数详解——中

接<Unity之粒子特效参数详解--上>继续写,Unity之粒子特效参数详解--上链接为:http://www.cnblogs.com/yikecaidechengzhangshi/p/6991750.html 步骤二:参数设置如图 Material可以自己找一个火焰贴图,Shader参数改为:Pariticles-Additive,参图: 剩下的明天再写,今天先这样,明天回来再补充修改.

[转载,感觉写的非常详细]DUBBO配置方式详解

[转载,感觉写的非常详细]DUBBO配置方式详解 原文链接:http://www.cnblogs.com/chanshuyi/p/5144288.html DUBBO 是一个分布式服务框架,致力于提供高性能和透明化的 RPC 远程服务调用方案,是阿里巴巴 SOA 服务化治理方案的核心框架,每天为 2,000+ 个服务提供 3,000,000,000+ 次访问量支持,并被广泛应用于阿里巴巴集团的各成员站点. Dubbo采用全spring配置方式,透明化接入应用,对应用没有任何API侵入,只需用Sp

Mybatis中接口和对应的mapper文件位置配置详解

Mybatis中接口和对应的mapper文件位置配置详解 原链接为:https://blog.csdn.net/fanfanzk1314/article/details/71480954 今天遇到一个问题是mybatis中接口和对应的mapper文件位置不同,而引起的操作也会不同,在网上找了好久最终找到了方法,这里就简单的解析一下: 我们知道在典型的maven工程中,目录结构有:src/main/java和src/main/resources,前者是用来存放java源代码的,后者则是存放一些资源