使用rapidJson解析json文件

今天介绍如果如何使用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

时间: 2024-10-05 09:03:30

使用rapidJson解析json文件的相关文章

python解析json文件

概念 序列化(Serialization):将对象的状态信息转换为可以存储或可以通过网络传输的过程,传输的格式可以是JSON.XML等.反序列化就是从存储区域(JSON,XML)读取反序列化对象的状态,重新创建该对象. JSON(JavaScript Object Notation):一种轻量级数据交换格式,相对于XML而言更简单,也易于阅读和编写,机器也方便解析和生成,Json是JavaScript中的一个子集. Python2.6开始加入了JSON模块,无需另外下载,Python的Json模

QT开发(六十二)———QT5解析Json文件

QT开发(六十二)---QT5解析Json文件 一.QT5 Json简介 QT4中使用第三方库QJson解析JSON文件. QT5新增加了处理JSON的类,类均以QJson开头,包含在QtCore模块中.QT5新增加六个相关类: QJsonArray 封装 JSON 数组 QJsonDocument 读写 JSON 文档 QJsonObject 封装 JSON 对象 QJsonObject::iterator 用于遍历QJsonObject的STL风格的非const遍历器 QJsonParseE

Android--------使用gson解析json文件

##使用gson解析json文件 **json的格式有两种:** **1. {}类型,及数据用{}包含:** **2. []类型,即数据用[]包含:** 下面用个例子,简单的介绍gson如何解析json,仅使用~ 先发两个json 内容 1.最外层是{} {             "resp": "ok",         "result": {             "date": "2013-4-19 16:

Java性能优化:正确的解析JSON文件

数据收集服务平均1小时OOM(java.lang.OutOfMemoryError: GC overhead limit exceeded)一次,发现都是在下载处理 JSON Atom Feed时OOM.怀疑是处理feed内存峰值消耗过大导致频繁Full GC.如下图: 分析过程 服务每15分钟会从Feed Server下载36个数据文件,包括12个17M,12个18M和12个100多M的文件.数据格式为JSON.由于服务是一次性加载整个JSON文件,然后转换成java对象.这个地方内存消耗可能

使用google-gson类库解析json文件

使用google-gson类库解析json文件 使用JsonParser解析器来解析字符串和输入流,变成json对象 代码如下: public class Readjson { public static void main(String[] args) { try { JsonParser parser=new JsonParser(); JsonObject object=(JsonObject) parser.parse(new FileReader("test.json"));

oc解析JSON文件

1利用NSBundle 取得json文件路径 NSString *path=[[NSBundle mainBundle]pathForResource:@"help.json" ofType:nil]; 2把文件转成NSData NSData *data=[NSData dataWithContentsOfFile:path]; 3利用NSJSONSerialization把data解析成数组或字典类型 NSArray *dicArray=[NSJSONSerialization JS

Java解析JSON文件的方法(一)

一.首先需要在Eclipse工程中导入相关的jar包,jar包参见链接:http://yunpan.alibaba-inc.com/share/link/NdA5b6IFK 二.提供一份待解析的json文件,apkinfo.json如下: [ { "name":"帐号", "package_name":"com.android.account", "check_version":"1.2"

C#解析json文件的方法

C# 解析 json JSON(全称为JavaScript Object Notation) 是一种轻量级的数据交换格式.它是基于JavaScript语法标准的一个子集. JSON采用完全独立于语言的文本格式,可以很容易在各种网络.平台和程序之间传输.JSON的语法很简单,易于人阅读和编写,同时也易于机器解析和生成. JSON与XML的比较◆可读性 JSON和XML的可读性相比较而言,由于XML提供辅助的标签,更加适合人阅读和理解.◆文件大小与传输 XML允许使用方便的标签,所以文件尺寸是要比J

Android Studio 解析json文件出现中文乱码解决方法

作为一个Android开发初学者,好不容易找到解决方法,跟大家分享一下, 其实很简单,只要保持服务器上的文件(date2.json)与软件的编码方式一样就行. 我用的Android Studio是utf-8,所以在服务器文件(date2.json)编码的方式也设值为utf-8; 新建一个文本文档,将写入内容,将文件另存为到服务器文件夹下的htdocs文件夹下,将.txt改为.json,编码方式为utf-8 直接保存就完成了 运行程序结果: //发送请求获取json文件 private void