Cocos2d-x 3.0 加入了rapidjson库用于json解析。位于external/json下。
rapidjson 项目地址:http://code.google.com/p/rapidjson/
wiki:http://code.google.com/p/rapidjson/wiki/UserGuide
下面就通过实例代码讲解rapidjson的用法。
使用rapidjson解析json串
-
引入头文件
12#include "json/rapidjson.h"#include "json/document.h" -
json解析
12345678910111213std::string str ="{\"hello\" : \"word\"}";CCLOG("%s\n", str.c_str());rapidjson::Document d;d.Parse<0>(str.c_str());if(d.HasParseError())//打印解析错误{CCLOG("GetParseError %s\n",d.GetParseError());}if(d.IsObject() && d.HasMember("hello")) {CCLOG("%s\n", d["hello"].GetString());//打印获取hello的值} -
打印结果
123cocos2d: {"hello":"word"}cocos2d: word
注意:只支持标准的json格式,一些非标准的json格式不支持。
一些常用的解析方法需要自己封装。注意判断解析节点是否存在。
使用rapidjson生成json串
-
引入头文件
1234#include "json/document.h"#include "json/writer.h"#include "json/stringbuffer.h"usingnamespacerapidjson; -
生成json串
12345678910111213141516171819rapidjson::Document document;document.SetObject();rapidjson::Document::AllocatorType& allocator = document.GetAllocator();rapidjson::Value array(rapidjson::kArrayType);rapidjson::Value object(rapidjson::kObjectType);object.AddMember("int", 1, allocator);object.AddMember("double", 1.0, allocator);object.AddMember("bool",true, allocator);object.AddMember("hello","你好", allocator);array.PushBack(object, allocator);document.AddMember("json","json string", allocator);document.AddMember("array", array, allocator);StringBuffer buffer;rapidjson::Writer<StringBuffer> writer(buffer);document.Accept(writer);CCLOG("%s",buffer.GetString()); -
打印结果
1cocos2d: {"json":"json string","array":[{"int":1,"double":1,"bool":true,"hello":"你好"}]}
本文详细介绍了如何在Cocos2d-x3.0中利用RapidJSON库进行JSON字符串解析及JSON串生成的基本操作,包括引入头文件、解析JSON串并检查错误、获取特定字段值,以及生成JSON串的过程。重点突出RapidJSON库在游戏开发中的应用。
3481

被折叠的 条评论
为什么被折叠?



