您的位置:首页 > Web前端 > JavaScript

jsonc库的安装以及简单使用

2016-05-11 00:32 429 查看

if 0

1:cpp在linux下的配置

JSON 官方的解释为:JSON 是一种轻量级的数据传输格式。

关于 JSON 更具体的信息,可参见 JSON 官网:http://www.json.org

jsoncpp 是比较出名的 C++ JSON 解析库。在 JSON 官网也是首推的。

下载地址为:http://sourceforge.net/projects/jsoncpp(版本为jsoncpp-src-0.5.0)。

下面开始说明配置方法:

1、先下载scons:(http://www.scons.org/)(版本为scons-2.1.0)并解压;

设定环境变量 # export MYSCONS=解压的路径


2、scons部署:进入scons解压目录(假定为MYSCONS),执行pythonMYSCONS),执行python MYSCONS/setup.py install将scons部署完毕。

3、使用scons编译jsoncpp(版本为jsoncpp-src-0.5.0)

进入jsoncpp解压目录,执行命令: # python $MYSCONS/script/scons.py platform=linux-gcc

**注:若果提示没找到scons.py则该为/script/scons platform = linux-gcc

将jsoncpp编译,在解压目录jsoncpp-src-0.5.0/libs/linux-gcc-3.4.6下可以看到生成了两个文件:

libjson_linux-gcc-4.6.1_libmt.a

libjson_linux-gcc-4.6.1_libmt.so

把.a文件拷贝到/usr/local/lib 目录下,为了方便编译给它改个名字libjsonlib.a


4、将jsoncpp目录下的头文件件拷到自己的工程里就可以使用了。

注意在编译里指定动态链接库的地址。 -ljsonlib

例子代码:

include

include

include “json/json.h”

int main(void)

{

Json::Value root;

Json::FastWriter fast_writer;

root["REGION_ID"] = "600901";

root["DATA_TOTAL_NUM"] = "456278";

std::cout << fast_writer.write(root) << std::endl;

return 0;


}

输出:{“DATA_TOTAL_NUM”:”456278”,”REGION_ID”:”600901”}

endif

else

jsonc库的安装以及简单使用

一、安装

jsonc库的源码可以从github上下载:https://github.com/jehiah/json-c

下载完的源码解压后,在目录下的个README.MD文件,我们根据文件中提示的步骤对jonsc进行安装:

下载安装时必要的工具:libtool, gcc, autoconf。我们可以使用软件包管理工具安装它们。比如在ubuntu下,可以使用命令

sudo apt-get install gcc libtool autoconf

安装这三个工具。

2. 按照README.MD文件,运行以下命令

sh autogen.sh

./configure

make

sudo make install

3. 安装完后,一般会在/usr/local/include下生成jsonc的头文件,以及在/usr/local/lib下生成jsonc的库文件,检查一下即可。

二、使用

该部分内容引用自http://www.jroller.com/RickHigh/entry/json_parsing_with_c_simple.

include

include

include

include

include “json.h”

int main(int argc, char **argv)

{

struct json_object *new_obj;

MC_SET_DEBUG(1);

// I added some new lines… not in real program

new_obj = json_tokener_parse(“/* more difficult test case */ { \”glossary\”: { \”title\”:

\”example glossary\”, \”pageCount\”: 100, \”GlossDiv\”: { \”title\”: \”S\”, \”GlossList\”:

[ { \”ID\”: \”SGML\”, \”SortAs\”: \”SGML\”, \”GlossTerm\”: \”Standard Generalized Markup Language\”, \”Acronym\”: \”SGML\”, \”Abbrev\”: \”ISO 8879:1986\”, \”GlossDef\”:

\”A meta-markup language, used to create markup languages such as DocBook.\”,

\”GlossSeeAlso\”: [\”GML\”, \”XML\”, \”markup\”] } ] } } }”);

printf(“new_obj.to_string()=%s\n”, json_object_to_json_string(new_obj));

new_obj = json_object_object_get(new_obj, “glossary”);

printf(“new_obj.to_string()=%s\n”, json_object_to_json_string(new_obj));

new_obj = json_object_object_get(new_obj, “pageCount”);

int pageCount = json_object_get_int(new_obj);

printf(“Page count = %d”, pageCount);

json_object_put(new_obj);

return 0;

}

下面,我们对这个例子进行解析:

第8行: 声明一个struct json_object类型的指针,struct json_object是用于存储json数据的一种结构类型。

第11行: 使用json_tokener_parse()函数,将字符串化的json数据转化为struct json_object类型的json

第17行: 与第11行的作用相反,json_object_to_json_string()函数可以将struct json_object类型的json数据转化为字符串。

第18行: 使用json_object_object_get()函数,从struct json_object的json数据中,寻找key为”glossary”的value。并将这个value作为一个新的struct json_object类型返回。

第21行: json_object_get_int()函数可以将类型为struct json_object的json数据转化为相应的int类型的数据。与此类似,也有json_object_get_string(), json_object_get_double()等一系列方法。

第23行: json_object_put()函数类似于free()函数,释放之前分配的new_object所占用的空间。

其实,在安装Jsonc库之后,我们可以在jsonc的目录下面找到test文件夹,下面有很多jsonc库的应用实例可以参考。上面所引用的博客中的例子,也是改自于test文件夹下面的程序。

上面的例子,只是解释如何从一个json字符串中获取到必要的信息,如果需要组装自己的json结构,可以参考jsonc API 文档页面:http://json-c.github.io/json-c/

Share this:

endif

if 0

下载cJSON.h和cJSON.c,把他们放在项目里一起编译

注:把#include”cJSON.h”放在头文件中的最后面.

endif

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: