本文主要介绍 JsonCpp 的常见用法。

1 概述

引用 GitHub 上对 JSON 和 JsonCpp 的介绍,内容如下:

JSON is a lightweight data-interchange format. It can represent numbers, strings, ordered sequences of values, and collections of name/value pairs.

JsonCpp is a C++ library that allows manipulating JSON values, including serialization and deserialization to and from strings. It can also preserve existing comment in unserialization/serialization steps, making it a convenient format to store user input files.

2 常见用法

2.1 判断value为null

可以使用 JsonCpp 的 isNull() 函数,判断 json 的 value 是否为空。

isNull() 函数信息如下:

bool Json::Value::isNull () const

示例代码(json_check_null.cpp)的内容如下:

#include <iostream>
#include <string>
#include <jsoncpp/json/json.h>using namespace std;int main()
{Json::Value root;string strJsonMsg;// 字符串类型root["occupation"]  = "paladin";// 布尔类型root["valid"]       = true;// 数字类型root["role_id"]     = 1;string strBuffer = root["someone"].asString();;if (root["someone"].isNull()){cout << "someone is null!" << endl;}if (root["sometwo"].isNull()){cout << "sometwo is null!" << endl;}// 将json转换为string类型strJsonMsg = root.toStyledString();cout<< "strJsonMsg is: " << strJsonMsg << endl;return 0;
}

编译并执行上述代码,结果如下:

根据上面的执行结果,可知:

  • 使用 isNull() 函数可以判断 json 的 value 是否为 null;
  • 对于 json 某个字段来说,只要是在代码中使用过,在封装 json 时,都会被封装到 json 内容中。比如本例中的 root["someone"] 和 root["sometwo"],代码中并未对两者进行赋值,但是只要有使用过这两者,那么它们就会被封装到 json 中。

JsonCpp常见用法相关推荐

  1. mysql中正则表达式的用法_Mysql中正则表达式Regexp常见用法

    Mysql中Regexp常见用法 模糊匹配,包含特定字符串 # 查找content字段中包含"车友俱乐部"的记录 select * from club_content where ...

  2. python六:常见数据类型以及常见用法

    bool 布尔值 # 在bool中 0,()(空元祖),[](空列表),{}(空字典),None,""(空字符串) 都是False int 整形 float 浮点型 str 字符串 ...

  3. vue-router 的常见用法

    vue-router 的常见用法 1. 路由重定向 路由重定向指的是:用户在访问地址 A 的时候,强制用户跳转到地址 C ,从而展示特定的组件页面. 通过路由规则的 redirect 属性,指定一个新 ...

  4. 空的宏定义作用及常见用法

    空的宏定义作用及常见用法 我们学习宏定义的第一个概念是,宏定义作为替换作用. 例如: #define SIZE 32 // 接下来代码使用SIZE就相当于32 宏定义是编译器在编译时,将程序中所有SI ...

  5. Arrays常见用法

    Arrays常见用法

  6. sed文本处理常见用法

    sed文本处理常见用法    2011-06-24  TsengYia#126.com http://tsengyia.blog.chinaunix.net/   ################## ...

  7. typeset的常见用法

    [保留] typeset的常见用法 http://www.chinaunix.net 作者:寂寞烈火  发表于:2007-12-16 09:50:34 [发表评论] [查看原文] [Shell讨论区] ...

  8. 框架前期准备篇之AutoFac常见用法总结 转载

    框架前期准备篇之AutoFac常见用法总结 一. 说在前面的话 凡是大约工作在两年以上的朋友们,或多或少都会接触到一些框架搭建方面的知识,只要一谈到框架搭建这个问题或者最佳用法这个问题,势必会引起一点 ...

  9. Java集合Collection与List的关系、常见用法

    关系树 [java] view plain copy print? ---|Collection: 单列集合 ---|List: 有存储顺序, 可重复 ---|ArrayList: 数组实现, 查找快 ...

  10. sscanf的常见用法

    例子:  1. 常见用法.  char buf[512] = ;  sscanf("123456 ", "%s", buf);  printf("%s ...

最新文章

  1. C面向对象之透明指针的运用
  2. 第三百三十八节,Python分布式爬虫打造搜索引擎Scrapy精讲—深度优先与广度优先原理...
  3. 树莓派发行版apt-get彻底卸载软件包
  4. 打造实用的Fedora 10
  5. 实现mysql按月统计的教程
  6. Java中main函数只能调用同类中的静态方法?
  7. MyBatis框架:延迟加载策策略、一级缓存、二级缓存
  8. EOS 帐户权限操作--你找不到的干货 (原创) 续集-EOS 3.0
  9. Swift5之网易云音乐页面搭建
  10. NYOJ 27 大数阶乘
  11. Python通过Zabbix API获得数据
  12. bzoj1296 [SCOI2009]粉刷匠 区间dp+背包
  13. 插入公式_word2016编写文档 插入公式选项为暗,不能操作
  14. thinkphp5.0验证码使用
  15. Hadoop系列之OutputCollector
  16. 没事爱在线上制造故障?这位程序媛有话说
  17. 【浙江大学PAT真题练习乙级】1002 写出这个数(20分) 真题解析
  18. java stream流处理
  19. 外贸公司比较常用邮箱有哪几个?邮箱的区别是什么?
  20. CAD中一个图形的多种画法

热门文章

  1. HTTP请求报头中各个字段的含义
  2. linux内存管理之uboot第一步
  3. java使用jeids实现redis2.6的HyperLogLog数据结构的操作
  4. iOS 架构模式--解密 MVC,MVP,MVVM以及VIPER架构
  5. Sql Server之旅——第二站 理解万恶的表扫描
  6. 大量用户升级iPhone3.0系统导致苹果服务器故障
  7. STM32 IWDG时间计算方法
  8. 【UOJ 275】最短路径问题
  9. 用dockers实现mysql主从同步
  10. Android笔记(四十七) Android中的数据存储——XML(三)SAX解析