教育行业A股IPO第一股(股票代码 003032)

全国咨询/投诉热线:400-618-4000

json文件解析

更新时间:2015年12月29日14时32分 来源:传智播客游戏开发学科 浏览次数:

Json⽂文件如下:
{"tiles" : [  [1, 0, 1, 1, 1, 1, 1, 1, 1 ],
                    [1, 1, 1, 1, 1, 1, 1, 1, 1 ],
                [1, 1, 1, 1, 1, 1, 1, 1, 1 ],
                 [1, 1, 1, 1, 1, 1, 1, 1, 1 ],
                 [1, 1, 1, 1, 1, 1, 1, 1, 1 ],
                [1, 1, 1, 1, 1, 1, 1, 1, 1 ],
                [1, 1, 1, 1, 1, 1, 1, 1, 1 ],
                 [1, 1, 1, 1, 1, 1, 1, 1, 1 ],
                 [1, 1, 1, 1, 1, 1, 1, 1, 1 ] ],
  "targetScore" : 1000,  "moves" : 15}注意:最后⼀一个数据不要加逗号!!
0.头⽂文件
#include "json/rapidjson.h"
#include "json/document.h"
1.获取json⽂文件的路径
string strPath = FileUtils::getInstance()->fullPathForFilename(strName);//strName为⽂文件名,⽐比如   ”Level_0.json”
2.读取⽂文件
Unsigned char* ch = FileUtils::getInstance()->getFileData(strPath, "r", &size);//size为⽂文件的字节数
3.创建⼀一个
String string data = string((const
 char*)ch,size);
4.定义document对象Document m_doc;
5.解析字符串,并将结果存⼊入m_doc
m_doc.Parse<0>(data.c_str());
6.检错
if (m_doc.HasParseError())
{
    CCLOG("GetParaseError:  %s\n",m_doc.GetParseError());}
7.根据关键字取值rapidjson::Value &valArray = m_doc["tiles"];
8.判断值类型是否与预期相同
if(valArray.IsArray())//判断是否为数组类型
valArray.IsString(),valArray.IsInt()…
{
//操作
}
9.对⼆维数组的操作
if(valArray.IsArray())//判断是否为数组
{
for (int i = 0; i < valArray.Capacity(); i++)
{
rapidjson::Value&valInnerArray = valArray[i];//json第i⾏
if(valArray.IsArray())//判断是否为数组
{
for (int j = 0; j < valInnerArray.Capacity(); j++)
{
rapidjson::Value&valInt = valInnerArray[j];//
json第j列
CCLOG("tile[%d][%d] = %d",i,j,valInt.GetInt());
if (0 == i && 1 == j)
{
valInt.SetInt(13);//设置新的数据
CCLOG("new tile[%d][%d] =
%d",i,j,valInt.GetInt());
}
}
}
}
}
部分结果截图如下:将第⼀⾏第⼆列的0变成了13
 


0 分享到:
和我们在线交谈!