m0_37984774 2017-04-12 02:47
浏览 777

求助!!!使用ValueMap来解析JSON的时候总是报错

图片说明
代码在WIN10的解决方案下完全没有问题但是在WIN32解决方案下就疯狂报错,并没有办法解决

代码如下:
ParseJson* ParseJson::createWithString(std::string data) {
ParseJson *pRet = new ParseJson();
if (pRet->initWithString(data)) {
pRet->autorelease();
return pRet;
}
CC_SAFE_DELETE(pRet);
return nullptr;
}

bool ParseJson::initWithString(std::string data) {
this->content = data;
return true;
}

void ParseJson::parse() {
rapidjson::Document document;
//解码content进行有效性检测,0为默认值
document.Parse(content.c_str());

//判断解析是否有错
CCASSERT(!document.HasParseError(), "Parsing to document failure");
log("Parsing to document succeeded");

CC_ASSERT(document.IsObject() && document.HasMember("Record"));
//获取document中Record后信息
const rapidjson::Value &records = document["Record"];

CC_ASSERT(records.IsArray());

for (unsigned int i = 0; i < records.Size(); i++) {
row = ValueMap();
//获取record对象
const rapidjson::Value &record = records[i];
//动作
if (record.HasMember("action")) {
const rapidjson::Value &v_action = record["action"];
CC_ASSERT(v_action.IsString());
row["action"] = Value(v_action.GetString());
}
//用户名
if (record.HasMember("userID")) {
const rapidjson::Value &v_userid = record["userID"];
CC_ASSERT(v_userid.IsString());
row["userID"] = Value(v_userid.GetString());
}
//密码
if (record.HasMember("password")) {
const rapidjson::Value &v_password = record["password"];
CC_ASSERT(v_password.IsString());
row["password"] = Value(v_password.GetString());
}
//clientID
if (record.HasMember("clientID")) {
const rapidjson::Value &v_clientID = record["clientID"];
CC_ASSERT(v_clientID.IsString());
row["clientID"] = Value(v_clientID.GetString());
}
//账户余额
if (record.HasMember("account")) {
const rapidjson::Value &v_account = record["account"];
CC_ASSERT(v_account.IsString());
row["account"] = Value(v_account.GetString());
}
//动作目标
if (record.HasMember("target")) {
const rapidjson::Value &v_target = record["target"];
CC_ASSERT(v_target.IsString());
row["target"] = Value(v_target.GetString());
}
//是否存在好友
if (record.HasMember("isExist")) {
const rapidjson::Value &v_isExist = record["isExist"];
CC_ASSERT(v_isExist.IsString());
row["isExist"] = Value(v_isExist.GetString());
}
//添加删除结果
if (record.HasMember("result")) {
const rapidjson::Value &v_result = record["result"];
CC_ASSERT(v_result.IsString());
row["result"] = Value(v_result.GetString());
}
//好友ID
if (record.HasMember("friendID")) {
const rapidjson::Value &v_friendID = record["friendID"];
CC_ASSERT(v_friendID.IsString());
row["friendID"] = Value(v_friendID.GetString());
}
//卡牌ID
if (record.HasMember("cardID")) {
const rapidjson::Value &v_cardID = record["cardID"];
CC_ASSERT(v_cardID.IsString());
row["cardID"] = Value(v_cardID.GetString());
}
//卡组ID
if (record.HasMember("groupID")) {
const rapidjson::Value &v_groupID = record["groupID"];
CC_ASSERT(v_groupID.IsString());
row["groupID"] = Value(v_groupID.GetString());
}
//卡包数目
if (record.HasMember("packageNumber")) {
const rapidjson::Value &v_packageNumber = record["packageNumber"];
CC_ASSERT(v_packageNumber.IsString());
row["packageNumber"] = Value(v_packageNumber.GetString());
}
//是否可以购买
if (record.HasMember("canPurchase")) {
const rapidjson::Value &v_canPurchase = record["canPurchase"];
CC_ASSERT(v_canPurchase.IsString());
row["purchaseCost"] = Value(v_canPurchase.GetString());
}
//花费
if (record.HasMember("account")) {
const rapidjson::Value &v_account = record["account"];
CC_ASSERT(v_account.IsString());
row["cost"] = Value(v_account.GetString());
}
//战役ID
if (record.HasMember("campaignID")) {
const rapidjson::Value &v_campaignID = record["campaignID"];
CC_ASSERT(v_campaignID.IsString());
row["campaignID"] = Value(v_campaignID.GetString());
}
//得到金钱
if (record.HasMember("coinAward")) {
const rapidjson::Value &v_coinAward = record["coinAward"];
CC_ASSERT(v_coinAward.IsString());
row["coinAward"] = Value(v_coinAward.GetString());
}
//得到卡牌
if (record.HasMember("cardAward")) {
const rapidjson::Value &v_cardAward = record["cardAward"];
CC_ASSERT(v_cardAward.IsString());
row["cardAward"] = Value(v_cardAward.GetString());
}
//战斗结束
if (record.HasMember("finish")) {
const rapidjson::Value &v_finish = record["finish"];
CC_ASSERT(v_finish.IsString());
row["finish"] = Value(v_finish.GetString());
}
//收到消息
if (record.HasMember("message")) {
const rapidjson::Value &v_message = record["message"];
CC_ASSERT(v_message.IsString());
row["message"] = Value(v_message.GetString());
}

/*

继续添加

*/

list.push_back(Value(row));

}
}

错误的地方是在row = ValueMap();这一句,row我是定义在头文件中,
private:
cocos2d::ValueMap row;

  • 写回答

0条回答 默认 最新

    报告相同问题?

    悬赏问题

    • ¥15 #MATLAB仿真#车辆换道路径规划
    • ¥15 java 操作 elasticsearch 8.1 实现 索引的重建
    • ¥15 数据可视化Python
    • ¥15 要给毕业设计添加扫码登录的功能!!有偿
    • ¥15 kafka 分区副本增加会导致消息丢失或者不可用吗?
    • ¥15 微信公众号自制会员卡没有收款渠道啊
    • ¥100 Jenkins自动化部署—悬赏100元
    • ¥15 关于#python#的问题:求帮写python代码
    • ¥20 MATLAB画图图形出现上下震荡的线条
    • ¥15 关于#windows#的问题:怎么用WIN 11系统的电脑 克隆WIN NT3.51-4.0系统的硬盘