nlohmann json简单用法,C++使用json, json与string转换使用笔记

C++解析json时,使用nlohmann json工具解析方便快捷。把它记录下来,方便以后查阅。


//地址:https://github.com/nlohmann/json, 需要引用的头文件位置:single_include/nlohmann/json.hpp
//需要引用的头文件,在使用时,将这个文件加入到工程中即可,只添加这一个文件就行
//#include "json.hpp"
//using nlohmann::json;

//创建普通元素和子元素

/*{
    "answer":{"everything":42},
    "happy":true,
    "list":[0,1,2],
    "name":"Mike",
    "nothing":null,
    "object":{
        "currency":"USD",
        "value":23
    },
    "pi":3.14
}*/
//
    json j;
    j["pi"] = 3.14;
    j["happy"] = true;
    j["name"] = "Mike";
    j["nothing"] = nullptr;
    j["answer"]["everything"] = 42;
    j["list"] = {0, 1, 2};
    j["object"] = {{"currency", "USD"}, {"value", 23}};

    cout<

//创建空的对象
    //{}
    json empty_implicit = json({});
    json empty_explicit = json::object();
    cout<

//创建数组

 //[]
json empty_array = json::array();
cout<

//异常处理(重要)

json::parse()异常处理:
1. //为了避免匹配失败导致程序异常,需要修改为
auto createJson_31 = json::parse(R"({"happy": true, "pi": 3.14})", nullptr, false);

//parse的第二个参数是回调函数指针,可以为空,第三个参数指示是否抛出异常,可以改为false,然后使用前增加判断
if (!(createJson_31.is_null()) && !(createJson_31.is_discarded()))
{
}

2.//用try catch捕捉异常

const string sJson="dfdsard";
try
{
    json j2 = json::parse(sJson.c_str());
}
catch (json::parse_error& ex)
{
    std::cerr << "parse error " << ex.what() << std::endl;
}

3. //提前判断字符串是否能转成json

string sJson="123123";
if (!json::accept(sJson))
{
    std::cerr << "parse error" << std::endl;
}

 

其他异常判断
//在访问json数据前,应判断是否存在
if (createJson_31.contains("happy"))
{

}
//在取值前,应判断类型,类型不匹配会出现异常
if (createJson_31["happy"].is_boolean())
{
    bool ha = createJson_31["happy"];
    cout< }
if (createJson_31["pi"].is_number_float())
{
    double pi = createJson_31["pi"];
    cout< }

你可能感兴趣的:(C++,json,nlohmann,c++)