Jsoncpp在linux中的安装、编译及其简单应用

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)。
这些都是常见的数据结构。事实上大部分现代计算机语言都以某种形式支持它们。这使得一种数据格式在同样基于这些结构的编程语言之间交换成为可能。
详细可参考:
http://www.cnblogs.com/kex1n/archive/2011/12/02/2272328.html

3.解压并配置SCons

将下载的 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;  
}

效果

相关文章

  jsonp需要在页面中添加一个<script>元素,由该元素来从其他服务器加载json数据。 <body&g...
<script> var testApi = "地址"; $.ajax({ url:testApi,//可以不是本地域名 type:‘post...
总是有人会遇到跨域问题,然后有个jsonp的解决方案,MVC中代码如下: public class JsonpResult : Syst...
最近开发中遇到调用第三方web_api的功能,后端在处理json数据时使用fastjson来做反序列化,由于调用api...
JSON全称为JavaScript ObjectNotation,它是一种轻量级的数据交换格式,易于阅读、编写、解析。jsoncpp...
JsonSerializer有多个属性,用于自定义如何序列化JSON。这些也可以通过JsonSerializerSettings参数,在...