zoukankan      html  css  js  c++  java
  • C++库---json

    c++操作json需要单独的库文件,而不像php那样直接$data = array()搞定的。

    所以先去下载c++的json库文件,再尊称规定的语法来实现c++下的json增删改等操作。

    1、新增一个json

    Json::Value root    //新增json数据root,root的类型可以是int, string, obj, array...

    2、在json中添加数据

    root.append(12345);          //output : [12345]
    root["key"].append("this is routine array in key");    //添加常规数组,output : {"key":[this is routine array in key]}
    
    root["key"]="add a relation array"        //添加关联数组,output : {"key":"add a relation array"}

    3、json->string(write将json value转换成字符串)

    jsoncpp中的Json::Write 是个纯虚类,不能直接使用,只有调用他的子类,Json::FastWrite(普通输出)和Json::StyleWrite(格式化输出)

    Json::Value admin;
    admin["admin_key"]=555;
    Json::FastWriter fast_write;
    cout<<fast_write.write(admin)<<endl;
    //output : {"admin_key":555}
    
    Json::Value admin;
    admin["admin_key"]=555;
    Json::StyleWriter style_write;
    cout<<style_write.write(admin)<<endl;
    //output: 
    //{
    //   "admin_key" : 555
    //}

    4、string->json(read将字符串写入json value)

    Json::Value root;
    std::string abc = "{"key":"this is value"}";
    Json::Reader reader;
    reader.parse(abc,root);
    Json::StyledWriter style_write;

    注意:如果json数组中没有某个key,但不小心使用(调用)了该key,系统会自动为期增加一个key:null

    Json::Value admin;
    admin["admin_key"]=555;
    int bbb = admin["key"].asInt();    //输出admin,结果如下:{"admin_key":555,"key":null}

    所以在使用key时,必须判断该key是否存在

    if (root.isMember("key")){     //判断key存在不
        cout<<"exist"<<endl;
    }
    else{
        cout<<"no-exist"<<endl;
    }
    if (!root["key"].isNull())       //判断存在不,不存在会自动创建一个
    {
        cout<<"exist"<<endl;
    }
    else{
        cout<<"no-exist but i'll create one,the value is null"<<endl;
    }    
  • 相关阅读:
    JS小记
    chrome 插件开发
    js闭包理解
    文件名后缀详解
    Glut 回调函数小结
    vc++ 6.0下Glut的配置 及 Glut 框架介绍
    数字图像点运算实践 (直方图均衡和分段线性拉伸)
    event.keycode值大全
    Bookmarklet
    牛人经典语录
  • 原文地址:https://www.cnblogs.com/alazalazalaz/p/4118986.html
Copyright © 2011-2022 走看看