c++ json方面的开源库锐英源深入研究的有jsoncpp和rapidjson,但是最近新推出的nlohmann/json也很火,有个朋友在Ureal结合开发时,让我指导他用nlohmann/json写出json数组类型处理的代码,我用nlohmann/json结合for auto写出了代码。

在研究过程中,发现nlohmann/json在github上的代码比较难下载,国内gitee上下载很方便,但是gitee上的帮助文档也是英文的,大家有兴趣可以用翻译工具翻译下,帮助文档后面是nlohmann/json的要点,比如json指针和json补丁、json合并补丁、隐式转换、任意类型转换、宏、专业序列化和二进制格式,这些要点掌握了,表明C++水平就真正上去了,当然做应用级开发,可能这些要点也接触不到,这里提这些就是说大家要重视开源库的精髓,不要觉得json常用,开源库就简单json.dump,我看了nlohmann/json的代码,有的头文件将近100K,里面代码量还是很复杂的。nlohmann/json的复杂用法,如果不掌握,或者心里不能确定,请联系锐英源,有专业服务。

nlohmann/json的配套文档和示例代码齐全,有文档目录和示例代码目录,我在示例代码里找到了array.cpp,应该是处理数组的示例。

nlohmann/json是新推出的,所以在功能上有新意,新在有点动态语言的结合,比如正面的初始化,

auto j2 = R"(
  {
    "happy": true,
    "pi": 3.141
  }
)"_json;

json dump dumps_json字符串转换json对象_json.dump

一些刚毕业的学生估计不好理解json.dump,”” _json是操作符重载,这类形式的重载在老代码里比较少见,初学者如果C++没深入学,估计这种形式很难理解,C++面向对象里有操作符重载,是重要的章节,操作符重载的目的是让操作以更自然形式的来表现。上段代码就是自然表现,加了后缀就能转换成json对象,不需要再另起一行调用函数,更方便。

json dump dumps_json字符串转换json对象_json.dump

初始化后,使用nlohmann/json也很简单,用好[]取属性,转换结果成string用dump,整体解析和序列化可以用操作符,nlohmann/json目标就是让用json更简单。

json.dump_json字符串转换json对象_json dump dumps

vs2019下使用nlohmann/json非常方便,在包含目录里加上nlohmann/json的目录,不用把nlohmann/json文件加到项目里,就可以直接编译使用。如果把nlohmann/json的目录直接拷贝到项目目录下,反而不好用,切记。

下面是数组代码示例:

            json coor = jf["geometry"]["coordinates"];
            for(auto& cf :coor)//或for循环
            {
                string sx=cf[0].dump();//X坐标
                string sy=cf[1].dump();//Y坐标
            }

限 时 特 惠: 本站每日持续更新海量各大内部创业教程,一年会员只需98元,全站资源免费下载 点击查看详情
站 长 微 信: muyang-0410