jsoncpp初使用

一 前言

由于最近一个c++项目需要使用json这种数据格式来传输数据, so上网去寻找合适的类库,毕竟对于这种不是很新的技术, 自己造轮子有点得不偿失. 从百度上翻了翻, 基本上就boost跟jsoncpp两个可用的, 由于项目主体使用boost, 所以本着去繁就简的原则,开始使用boost,不过可能是我技术不够,反正觉得boost很难用, 于是转而用jsoncpp. 用了几天, 感觉jsoncpp比boost好用多了,代码小巧, 使用简单, 而且用法上跟python很像,毕竟这东西就是脚本语言javascript原生的数据结构

二 jsoncpp到目前为止发现的一些可能是坑的地方

1 查看一个字段是否存在要用isMember这个函数. 而不是isNull这个函数,后者只是判断这个字段的值是不是null而已

2 operator[]这个函数跟c++语言里面map里面同名函数很像, 就是如果这个字段不存在,就是创建这个字段,并且将其值赋null

3 判断一个字段的值的类型相关的

<1> isUint()这个函数, 如果json对应的值是个负数,比如说"-1" , 则返回false, 这个跟c++语言里面int类型的可以给unsigned int类型的变量的规则还是不太一样的

<2> isObject这个是判断某个字段的值是不是一个对象(包括python里面叫做字典的变量类型).这个除了字典以外的对象, 这个概念我现在还没有弄明白

4 暂时就发现上面这些, 其他的等我发现了再过来补充

时间: 2024-12-25 16:25:48

jsoncpp初使用的相关文章

jsoncpp使用经验

jsoncpp判断某个字段是否存在的方法如下: 1)if (root["url"].type() != Json::nullValue) 2)if(value["sex"].isNull()) 注意事项 1)jsoncpp是一个c++使用的json库,通过重载中括号[]来实现json的语法,但是由于c++ 是一个强类型的语言,jsoncpp在实现过程中,使用了大量的断言,如果遇到类型不正确的 时候,就会强制断言,导致程序退出 例如,将如下的字符串传递给jsoncpp

初笋科技:天阔资本穆延飞:只有你擅长的才是真正的风口

初笋科技:天阔资本穆延飞:只有你擅长的才是真正的风口 这个已过了不惑之年的西北汉子,军人出身的他和现在的资本家------天阔资本首席执行官,似乎八竿子打不到一块儿.但是,在投资市场上的战绩却历历在目.算起来,天阔资本是从06年开始,在投资行业涉入的时间还是比较早,一开始主要是实体投资,主要与政府间用BOT合作,今年还斥资9800万做了一个BOT项目.而互联网的投资主要在大热的时候开始,是从14年开始,就做到了新三板.也许,多年的军队行政管理,专业技术,机关参谋多岗位工作经历,养就了穆延飞对待投

cocos2d-x ios游戏开发初认识(五) CCsprite精灵类

这次写一下精灵创建的几种类型: 一.通过文件创建: 在原有的基础上添加如下代码: //一.通过文件创建精灵 CCSprite *bg =CCSprite::create("map.png"); CCSize winSize  =CCDirector::sharedDirector()->getWinSize(); //得到屏幕的尺寸 bg->setPosition(ccp(winSize.width/2, winSize.height/2)); this->addCh

erlang 初体验

最近测试了一下 erlang的坑... 如不出意外.... 大家第一眼看到这语法... 心里第一句一定是"我擦.这TM都是啥!!!!!" 没有变量!!! 没有结构体!!! 没有循环!!! 好吧,至少我是这样想的. 找了半天..连个if也不知道怎么写.. 这记录一些基本常识.. -module(module_name)  %%定义模块 括号内的要和文件名相同. -export([fun1/1 fun2/2]) %%这里是导出2个函数对外使用  函数名/参数名. 一个简单的函数定义如下 f

linux初体验

第一次听到linux这个'词语'是在一次偶然的朋友聊天中朋友提到的,之前压根没听到过'这个东西',所以我可以说是个linux的新新手,菜鸟都不算. 截至到目前,我已经开始linux系统运维学习有差不多10天时间了.在没接触linux之前,我对它的认识仅仅是:它是个计算机系统.决定学习linux系统运维之前,自我以为运维应该是对系统的一些日常维护之类的,不会很难的东西,我更希望运维是个不难的东西,我个人很笨,对难的东西可能接受的很慢,所以我愿意认为运维是很简单的,这样我就可以轻轻松松的掌握运维相关

初尝Mcafee之在ePO中进行策略和客户端任务设置【06】

一.策略和客户端任务概述 在ePO中点击"菜单",可以看到一个策略的大分类:ePO就是通过分配策略和客户端任务给客户端代理,然后代理将这些策略和客户端任务分配给本地相应的Mcafee杀毒防护软件进行执行: 策略是针对软件的内在参数和计划任务的配置,例如VirusScan是否扫描压缩文件,VirusScan的扫描计划的设置: 客户端任务是针对软件的外在交互,例如安装,部署,更新,信息统计等: 二.策略和客户端任务的分配结构: 策略和客户端任务的分配结构有点跟Windows Server的

wxFormBuilder初体验

第一步 打开wxFormBuilder 修改工程信息并保存工程 Name: 工程名 File: 生成代码(.py)文件名 Code_generation: 生成代码类型 第二步 创建窗体 切换至forms页 选择Form按钮创建框架(或Dialog按钮创建对话框) 修改窗体信息 name:窗体类名 title:窗体标题 第三步 创建布局 切换至Layout页 选择BoxSizer按钮创建单行/列布局 第四步 创建面板容器 切换至Containers页 选择Panel按钮创建面板 并取消边框选项

初到博客园

因为一份新的工作,开始接触到软件开发的知识,虽说只需要掌握一些基础的linux,mongodb的知识,可是对于我来说,也是个不小的挑战. 已经接触linux的基础命令,知晓一些基础的命令行,参考鸟哥,从一开始的小白,安装软件,到现在基本的一些常识都在慢慢的积累,希望自己不要跑偏,朝着目前的工作需求慢慢前行. 也许正是因为工作需求,我自己才能从头开始学起一门新的知识,毕业才两年,似乎很多时候,已经很难静下心去学习新的东西,此次正好换城市,换工作,换行业,而且,领导给我时间让我自己学习,这是多么仁慈

Scrapy 1.4 文档 01 初窥 Scrapy

初窥 Scrapy Scrapy 是用于抓取网站并提取结构化数据的应用程序框架,其应用非常广泛,如数据挖掘,信息处理或历史存档. 尽管 Scrapy 最初设计用于网络数据采集(web scraping),但它也可用于使用 API(如 Amazon Associates Web Services)提取数据或用作通用的网络爬虫. 爬虫(spider)示例 为了向您展示 Scrapy 带给您的是什么,我们将使用最简单的方式运行一个爬虫,向您展示一个 Scrape Spider 的例子. 这是一个爬虫的