Quantcast
Channel: Cocos中文社区 - 最新主题
Viewing all articles
Browse latest Browse all 90780

json解析错误,谁能分享一个json解析文件。

$
0
0

@865497878 写道:

HelloWorld::findAllCallBack called with data:
{"name":"findAllCallBack","args":[
{"ResultCode":0,"Record":[
{"cdate":"2017-01-15 20:00:54","content":"Node.js insert."},
{"cdate":"2017-01-15 20:03:53","content":"Node.js insert."},
]}]}
通过下面代码解析,Record发生错误,ResultCode反而没错,从注释(判断是否有Record)开始错误
ValueMap JsonParser::decode(string content)
{
rapidjson::Document document;
document.Parse<0>(content.c_str());
ValueMap dict;
//解析错误
CCASSERT(!document.HasParseError(), "Parsing to document failure.");

CCLOG("Parsing to document succeeded.");

CC_ASSERT(document.IsObject() && document.HasMember("args"));
const rapidjson::Value &args= document["args"]; //读取ResultCode 
CC_ASSERT(args.IsArray());

if ( args.Size() == 0) {
	return dict;
}

unsigned int i = 0;
//获得一条记录对象
const rapidjson::Value &arg = args[i]; 
CC_ASSERT(arg.IsObject() && arg.HasMember("ResultCode"));	
const rapidjson::Value &val_ResultCode= arg["ResultCode"]; //读取ResultCode 

//判断ResultCode类型 
CC_ASSERT(val_ResultCode.IsInt());
int resultCode = val_ResultCode.GetInt(); 

dict["ResultCode"] = Value(resultCode);

//判断是否有Record
if (arg.IsObject() && arg.HasMember("Record")) {

	const rapidjson::Value &records= arg["Record"]; //读取中文的数组 
	//判断是不是数组 
	CC_ASSERT(records.IsArray());

	ValueVector listData;

	for(unsigned int i = 0; i < records.Size();i++) //如果不是数组,这一行会报错 
	{ 
		ValueMap row;

		//获得一条记录对象
		const rapidjson::Value &record = records[i]; 

		//判断这个record有没有CDate键 
		CC_ASSERT(record.HasMember("cdate"));
		const rapidjson::Value &val_CDate = record["cdate"]; 
		//判断CDate类型 
		CC_ASSERT(val_CDate.IsString());
		const char* cDate = val_CDate.GetString(); 
		row["cdate"] = Value(cDate);

		//判断这个record有没有Content键 
		CC_ASSERT(record.HasMember("content"));
		const rapidjson::Value &val_Content = record["content"]; 
		//判断Content类型 
		CC_ASSERT(val_Content.IsString());
		const char* cContent = val_Content.GetString(); 
		row["content"] = Value(cContent);

		listData.push_back(Value(row));
	}

	dict["Record"] = Value(listData);

}
return dict;

}

帖子: 2

参与者: 1

阅读整个主题


Viewing all articles
Browse latest Browse all 90780

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>