linux下json使用

JSON(JavaScript Object Notation)跟xml一样也是一种数据交换格式,了解json请参考其官网http://json.org,本文不再对json做介绍,将重点介绍c++的json解析库的使用方法。json官网上列出了各种语言对应的json解析库,作者仅介绍自己使用过的两种C++的json解析库:jsoncpp(v0.5.0)和Boost(v1.34.0)。

 使用JsonCpp前先来熟悉几个主要的类: 

Json::Value     可以表示里所有的类型,比如int,string,object,array等,具体应用将会在后边示例中介绍。

Json::Reader   将json文件流或字符串解析到Json::Value, 主要函数有Parse。

Json::Writer    与Json::Reader相反,将Json::Value转化成字符串流,注意它的两个子类:Json::FastWriter和Json::StyleWriter,分别输出不带格式的json和带格式的json。

主要包括:从字符串解析,从文件解析,写入文件,读取文件,输出json,读取json等!

环境配置:将解压下的库,头文件和lib添加到指定的位置(可以工程文件夹也可以是环境变量中);

linux下json使用_第1张图片

编写 Makefile文件


测试文件和测试代码

测试文件:test.json

{
    "uploadid": "UP000000",
    "code": "0",
    "msg": "",
    "files":
    [
        {
            "code": "0",
            "msg": "",
            "filename": "1D_16-35_1.jpg",
            "filesize": "196690",
            "width": "1024",
            "height": "682",
            "images":
            [
                {
                    "url": "fmn061/20111118",
                    "type": "large",
                    "width": "720",
                    "height": "479"
                },
                {
                    "url": "fmn061/20111118",
                    "type": "main",
                    "width": "200",
                    "height": "133"
                }
            ]
        }
    ]
}

测试代码:

		#include 
		#include 
		#include 
		#include  
		#include 
		using namespace std;

		//返回字符串的长度
		//int getjson(char * buf, string * root)
		int getjson(char * buf, string * root)
		{
		int len = sizeof(*root) ;
		memcpy(buf,root,len);
		//cout << "buf:"<< buf <

出现乱码:

mingming
0x7ffd2f1f9b80
UP000000
UP000000
type:large
url:fmn061/20111118
type:main
url:fmn061/20111118

{
	"lUserID" : 1,
	"name" : "jiaojiao"
}

{"lUserID":1,"name":"jiaojiao"}

length:32
1
1
jiaojiao
****
	{"lUserID":1,"name":"jiaojiao"}

�#****
	�#
32
haha�#

修改程序:用 c_str( )函数将string 对象转换成 char *风格的字符串

#include 
#include 
#include 
#include 
#include 
using namespace std;

//返回字符串的长度
//int getjson(char * buf, string * root)
int getjson(char *buf, string  root)
{
  int len = sizeof(root);
  memcpy(buf, root.c_str(), len);
  //cout << "buf:"<< buf <
mingming
0x7fff019c4890
UP000000
UP000000
type:large
url:fmn061/20111118
type:main
url:fmn061/20111118

{
	"lUserID" : 1,
	"name" : "jiaojiao"
}

{"lUserID":1,"name":"jiaojiao"}

length:32
1
1
jiaojiao
****
	{"lUserID":1,"name":"jiaojiao"}

{"lUserID":1,"name":"jiaojiao"}
6
****
	{"lUserID":1,"name":"jiaojiao"}
6
32
haha{"lUserID":1,"name":"jiaojiao"}
6
1
jiaojiao















你可能感兴趣的:(Linux)