jsoncpp 安装入门

情到浓时终转凉″ 提交于 2020-09-28 16:49:59

安装

使用cmake安装

cd jsoncpp-1.8.0 mkdir -p build/debug cd build/debug cmake -DCMAKE_BUILD_TYPE=release -DBUILD_STATIC_LIBS=OFF -DBUILD_SHARED_LIBS=ON -DARCHIVE_INSTALL_DIR=. -DCMAKE_INSTALL_INCLUDEDIR=include -G "Unix Makefiles" ../..

执行完后会生成一个Makefile,接着执行make && make install即可。

包含头文件的json文件夹位于/usr/local/include目录,库文件位于/usr/local/lib64目录。

最后打开/etc/profile,添加以下内容:


export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/lib64

export LIBRARY_PATH=$LIBRARY_PATH:/usr/local/lib64

保存,再来一句: source /etc/profile,修改立即生效。

安装结束。

使用

sample code如下

#include <iostream>
#include <string>
#include "json/json.h"
int main()
{
    Json::Value json_temp;
    json_temp["name"] = Json::Value("zhangsan");
    json_temp["age"] = Json::Value(18);    
    Json::Value root;
    root["key_array"].append("array_string");
    root["key_array"].append(1234);
    root["key_string"] = Json::Value("value_string");
    root["key_number"] = Json::Value(12345);
    root["key_boolean"] = Json::Value(false);
    root["key_double"] = Json::Value(12.345);
    root["key_object"] = json_temp;    
    Json::FastWriter fast_writer;
    std::cout << fast_writer.write(root);
    Json::StyledWriter styled_writer;
    std::cout << styled_writer.write(root);    
    std::string str_test = "{\"id\":1,\"name\":\"zhangsan\",\"school\":[\"Jinglin Senior High School\",\"Nan Jing University\"]}";
    Json::Reader reader;
    Json::Value value;
    if(!reader.parse(str_test, value))
    {
        return 0;
    }
    std::string value_name = value["name"].asString();
    std::cout << value_name << std::endl;
    std::cout << value["name"] << std::endl;    
    if(!value["id"].isInt())
    {
        std::cout << "id is not int\n" << std::endl;
    }
    else
    {
        int value_id = value["id"].asInt();
        std::cout << value_id << std::endl;
    }
    int size = value["school"].size();
    std::cout << "school size is "<< size<< std::endl;
    for (int i = 0;i < size;i++)
    {
        std::cout<< "school is "<<value["school"][i].asString() <<std::endl;
    }
    return 0;
}

将string 转化成 Json::value时主要用到了Json:Reader对象

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!