1. 准备工作
Jsoncpp下载:https://sourceforge.net/projects/jsoncpp/
Scons下载:https://sourceforge.net/projects/scons/
Linux:本文以红帽为例
2. 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)。
这些都是常见的数据结构。事实上大部分现代计算机语言都以某种形式支持它们。这使得一种数据格式在同样基于这些结构的编程语言之间交换成为可能。
3.解压并配置SCons
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)。
这些都是常见的数据结构。事实上大部分现代计算机语言都以某种形式支持它们。这使得一种数据格式在同样基于这些结构的编程语言之间交换成为可能。
将下载的 Scons压缩包,进行解压:
$tar -xvf scons-src-2.5.1.tar.gz
配置环境变量:
export SCONS_PATH=****** /scons-2.1.0
export SCONS_LIB_DIR=$SCONS_PATH/engine
4.解压配置Jsoncpp
将下载的 jsoncpp压缩包,进行解压:
$tar -xvf jsoncpp-src-0.5.0.tar.gz
配置环境变量:
export JSONCPP_PATH=/*******/jsoncpp-src-0.5.0
5.编译Jsoncpp
做好以上准备工作后,对jsoncpp进行编译:
首先,cd到jsoncpp解压的目录下:
cd jsoncpp-src-0.5.0
python $SCONS_PATH/src/script/scons.py platform=linux-gcc
6.举例
写了个小Demo,将系统内文件内容读取,并组织成Json串:
#include <iostream>
#include <cstdio>
#include <stdio.h>
#include <string.h>
#include <memory>
#include <exception>
#include <fstream>
#include "json/json.h"
using namespace std;
int main(int argc, char **argv) {
Json::Value root;
Json::Value header;
Json::Value arrayObj;
Json::Value item;
//Json头信息
header["pro"] = "17";
header["service_type"] = "GPS11";
//open文件
char buffer[256];
ifstream in("test.txt");
int i = 0;
if (! in.is_open())
{
cout << "Error opening file";
exit (1);
}
while (!in.eof() )
{
in.getline (buffer,100);
item[buffer] = i;
i++;
arrayObj.append(item);
item.clear();
}
root["HEADER"] = header;
root["BODYLIST"] = arrayObj;
std::string out = root.toStyledString();
std::cout << out << std::endl;
in.close();
return 0;
}
效果:
本文永久更新链接地址:http://www.linuxidc.com/Linux/2017-04/142574.htm