使用rapidJson解析json文件
来源:互联网 发布:大疆 人工智能 编辑:程序博客网 时间:2024/04/27 23:59
今天介绍如果如何使用rapidJson解析json文件~笔者之前也使用过json库,可惜搬到cocos2d-x使用过程出现问题...忘了什么问题,搞了很久解决不了,索性使用cocos2d-x自带的json解析库~
首先引入头文件,#include "cocostudio/CocoStudio.h"
,因为从cocosStudio导入项目的时候会有json文件~
接着就是解析:
std::string filePath = FileUtils::getInstance()->fullPathForFilename("test.json");std::string contentStr = FileUtils::getInstance()->getStringFromFile(filePath);
这里的contentStr其实就是Json文件中的字符串了,打个log看下吧~
接着解析数据 _doc.Parse<0>(contentStr.c_str());
, 这里的_doc 是rapidjson::Document
类, Json解析库的功能就是把json文件解析成类似map的类~(学过object-c的话就知道, 其实就是Dictionary啦, 总感觉是用C++在写oc,好别扭啊),然后就可以通过[下标]去取到相应的内容。 然后再根据rapidJson 库去取得相应的数据类型。 主要有:
GetInt();GetString();GetDouble();GetBool();GetInt64();GetUint64();
了解以上方法之后,基本就能使用rapidJson解析json文件了。下面说说常见错误:
Calling a private constructor of class 'rapidjson::GenericValue<rapidjson::UTF8<char>, rapidjson::MemoryPoolAllocator<rapidjson::CrtAllocator>>'
原因可能是你传值的时候使用rapidjson::Value 当成函数参数传值的时候没有使用&
引用,导致调用了private 的构造函数。- 运行程序卡在
const Ch* GetString()
子类的代码
原因可能是你的下标写错了 - 运行程序卡在
RAPIDJSON_ASSERT(IsObject());
原因可能是你的_doc.Parse<0>()这里填的不是一个json文件的字符串,检查你的文件路径有没有错吧。。。
最后贴一个自己写的Demo
(请无视图片内容)
写了一个定时器,两秒钟后加载json数据,测试了获取字符串,数字,boolean等,我把rapidjson::value 当成参数传给button,优化代码结构 。
下载地址:http://download.csdn.net/detail/joueu/8231131
转载请注明出处:helkyle.tk
1 0
- 使用rapidJson解析json文件
- c++解析json文件: Rapidjson
- Json文件 使用rapidjson获取Json数据
- Json文件 使用rapidjson获取Json数据
- Rapidjson的简单使用(拼接json串,存取文件中的json,解析json串)
- Rapidjson的简单使用(拼接json串,存取文件中的json,解析json串)
- 18.cocos2d-x解析Json(使用rapidjson)
- rapidjson初探——使用C++解析json
- json: RapidJson 解析(1)
- cocos2d-x RapidJson解析json
- 使用rapidjson生成json串
- C++ JSON 解析——RapidJSON介绍
- C++常用库/Json解析库--RapidJson
- 利用rapidjson解析嵌套的json
- [cocos2dx 3.0 (四)] CocoStudio生成Json文件 + 使用rapidjson获取Json数据
- Cocos Studio生成Json文件并使用rapidjson获取Json数据
- Cocos Studio生成Json文件并使用rapidjson获取Json数据
- 【RapidJson】Rapidjson解析
- BeautifuSoup整理笔记
- android 关于按钮点击效果的方法
- EXTJS组件化(三)----组件之间的暧昧关系
- Android使用adb指令在虚拟机中安装、卸载apk程序
- 关系代数的并行计算
- 使用rapidJson解析json文件
- 基于QT webkit 本地C++与Web交互程序心得浅谈(本人新手)
- 使用 JMeter 完成常用的压力测试
- 黑马程序员——OC基础——分类和类的本质
- HBase的运算有多快
- EXTJS组件化(四)---减少你的代码
- android 休眠唤醒机制分析(一)
- cocos2dx Action备忘
- 开始使用Mercurial分布式版本控制