jsoncpp编译
㈠ linux下jsoncpp-src-0.5.0.tar.gz怎么用指令安装
jsoncpp-src-0.5.0.tar.gz这是一个源文件包。
所以要自己手动编译,安装。
Step1: 解压
tarzxvfjsoncpp-src-0.5.0.tar.gz
Step2: 编译和安装(一般都是如此安装,如果configure失败,请根据提示安装依赖)
cd解压后的路径
./configure--prefix=安装路径(绝对路径)。
make
makeinstall
这一步做完, 可执行文件和头文件等已到 “安装路径”。
Step3:执行程序
cd安装路径
找到可执行文件, 即可执行。
㈡ JSON中数组该如何解析呢c++中使用jsoncpp
JSON是一个轻量级的数据定义格式,比起XML易学易用,而扩展功能不比XML差多少,用之进行数据交换是一个很好的选择
JSON的全称为:javaScript Object Notation ,顾名思义,JSON是用于标记javascript对象的,详情参考http://www.json.org/。
本文选择第三方库JsonCpp来解析json,JsonCpp是比较出名的c++解析库,在json官网也是首推的。
JsonCpp简介
JsonCpp主要包含三种类型的class:Value Reader Writer。
jsoncpp中所有对象、类名都在namespace json中,包含json.h即可。
注意: Json::Value只能处理ANSI类型的字符串,如果C++程序使用Unicode编码的,最好加一个Adapt类来适配。
下载和编译
本文运行环境是: Redhat 5.5 + g++version 4.6.1 + GNU Make 3.81 + jsoncpp-0.5.0
下载地址是:http://sourceforge.net/projects/jsoncpp/
解压之后得到jsoncpp-src-0.5.0文件夹,我们只需要jsoncpp的头文件和cpp文件,其中jsonscpp的头文件位于jsoncpp-src-0.5.0includejson,jsoncpp的cpp文件位于jsoncpp-src-0.5.0srclib_json。
这里我列出我们的工作目录:
jsoncpp/ //工作目录
|-- include //头文件根目录
| |-- json //json头文件,对应jsoncpp-src-0.5.0includejson
|-- src //cpp源码文件根目录
|-- json //jsoncpp源码文件,对应jsoncpp-src-0.5.0srclib_json
|-- main.cpp //我们的主函数,调用jsoncpp的示例代码
|-- makefile //makefile,不用我们多说了吧,不懂请看我博客的makefile最佳实践
反序列化Json对象
假设有一个json对象如下:
{  "name": "json″,  "array": [  {  "cpp": "jsoncpp" },  {  "java": "jsoninjava" },  {  "php": "support" }  ]  } 
我们要实现这个json的反序列号代码如下:
voidreadJson() {  usingnamespacestd;  std::stringstrValue = "{\"name\":\"json\",\"array\":[{\"cpp\":\"jsoncpp\"},{\"java\":\"jsoninjava\"},{\"php\":\"support\"}]}";  Json::Reader reader;  Json::Value value;  if(reader.parse(strValue, value))  {  std::stringout= value["name"].asString();  std::cout <<out<<std::endl;  constJson::Value arrayObj = value["array"];  for(unsigned inti = 0;i <arrayObj.size(); i++)  {  if(!arrayObj[i].isMember("cpp"))  continue;  out= arrayObj[i]["cpp"].asString();  std::cout <<out;  if(i != (arrayObj.size() - 1))  std::cout <<std::endl;  }  }  } 
序列化Json对象
voidwriteJson() {  usingnamespacestd;  Json::Value root;  Json::Value arrayObj;  Json::Value item;  item["cpp"] = "jsoncpp";  item["java"] = "jsoninjava";  item["php"] = "support";  arrayObj.append(item);  root["name"] = "json";  root["array"] = arrayObj;  root.toStyledString();  std::stringout= root.toStyledString();  std::cout <<out<<std::endl;  }
㈢ jsoncpp linux下怎么编译
# tar zxvf scons-2.1.0.tar.gz
# tar zxvf jsoncpp-src-0.5.0.tar.gz
设定环境变量【关键】,绝对路径
# export MYSCONS=解压的路径
# export SCONS_LIB_DIR=$MYSCONS/engine
# cd jsoncpp-src-0.5.0
# python $MYSCONS/script/scons platform=linux-gcc
编译成功后,在在jsoncpp-src-0.5.0/libs/目录下找到相应的*.a和*.so
可以修改为:mv libjson_linux-gcc-4.4.6_libmt.so libjson.so
顶
0
踩
㈣ jsoncpp和rapidjson哪个好用
易用性:rapidjson是全头文件包含的,jsoncpp需要你内置编译或编译成库;但rapidjson的一些接口不全,只提供了一层一层的这种解析方式,不能将某一层一次读出来,实际用的时候,要简单封装一下,不然代码量会很大;
性能:rapidjson的性能是现在所有的c++ json解析库里面最高的,没有之一;
容错性:rapidjson只支持标准的 json 格式,很多人以为这个是缺点,我觉得这个是优点,大家都按照标准做,这是成本最低的;
rapidjson之前是托管在Googe Code上的,现在已迁移到GitHub,地址:miloyip/rapidjson · GitHub
㈤ 如何将json-cpp库移植到arm-linux下使用
1 下载源码; 2 交叉编译; 3 将libjscon-XXX.so 拷贝到 开发板; 4 编写运用程序,加入json头文件,交叉编译运用程序,编译时加上-json 引入json库文件。
㈥ 往c++项目里添加jsoncpp
http://www.codeproject.com/Articles/20027/JSON-Spirit-A-C-JSON-Parser-Generator-Implemented
我用的是这个,前提你要知道Boost,都是要自己编译的,因为有些格式或设定跟你程序不一致,会有问题!
㈦ 怎么在VS2008里使用jsoncpp
C++要使用JSON来解析数据,一般采用jsoncpp.
下载jsoncpp后,按ReadMe文档的说法是要先安装的,但是安装比较麻烦。然而事实上,我们并不需要安装,就可以直接使用。
方法一:直接拷贝源文件。这个方法比较简单,但不推荐,因为不便于项目管理。
- VS2008里新建一个空的控制台程序(用作测试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 工程目录下 
- 在VS2008里引入工程目录下刚刚从jsoncpp-src-0.5.0 导入的文件,如图1 
- 在VS2008里新建main.cpp来测试jsoncpp是否可用。代码见文章末尾main.cpp 
方法二:使用静态链接库
- VS2008里新建一个空的控制台程序(用作测试jsoncpp是否可用),名为: TestJSON 
- 解压下载好的文件:jsoncpp-src-0.5.0.tar.gz 
- 利用VS2008打开jsoncpp-src-0.5.0makefilesvs71目录下的jsoncpp.sln,会出现三个Project:jsontest,lib_json,test_lib_json 
- 在lib_json上 右击-->Properties-->Configuration Properties-->C/C++-->Code Generation,注意右侧的Runtime Library的内容,如图2,看完箭头所指的东西就可以点确定,关掉属性页。 
- 编译lib_json,显示编译成功后,在jsoncpp-src-0.5.0uildvs71debuglib_json目录下会生成一个json_vc71_libmtd.lib,将这个lib拷贝至TestJSON工程目录下。 
- 将jsoncpp-src-0.5.0includejson目录下的所有.h文件拷贝至TestJSON工程目录下,并在工程Header Files引入. 
- 将方法一里的main.cpp添加到工程中,并在工程名上 右击-->Properties-->Configuration Properties-->C/C++-->Code Generation, 将Runtime Library改成图2箭头所示内容。 
- 在工程名上右击-->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编译成lib文件
比如你在VC6.0有一个工程project,里面有以下3个文件
/*1*/fun.h
#ifndef FUN_H
#define FUN_H
void fun();
#endif
/*2*/fun.c
#include <stdio.h>
#include "fun.h"
void fun()
{
printf("fun()");
}
/*3*/main.c
#include <stdio.h>
#include "fun.h"
int main()
{
fun();
getchar();
}
菜单project->setting->link
把输出文件名“Debug/project.exe”改成“Debug/project.lib”,确定
按F7组建project.lib
这样在你的project\Debug文件夹下就可以找到project.lib了
㈨ jsoncpp阅读文件不正确问题,怎么解决
TO awei114: 我编写WinCE应用程序lib直接加工程文件夹吧我其都加需要设置路径啊直接加入文件json.h #prama comment(lib,json)
已搞定能够编译链接通谢谢各位关注接要往更深处走
㈩ jsoncpp问题
放到你的工程里,相当于你的工程额外多了一个cpp文件,和两个h文件,如果你的工程仅有一个main.cpp,那就是两个cpp和两个h文件,组成了你这个工程。
