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串引入头文件
1 2 | #include "Json/rAPIdJson.h" #include "Json/document.h" |
Json解析
std::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的值 } |
打印结果
cocos2d: { "hello" : "word" } cocos2d: word |
注意:只支持标准的Json格式,一些非标准的Json格式不支持。
一些常用的解析方法需要自己封装。注意判断解析节点是否存在。
使用rAPIdJson生成Json串引入头文件
#include "Json/document.h" #include "Json/writer.h" #include "Json/stringbuffer.h" using namespace rAPIdJson; |
生成Json串
rAPIdJson::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; @H_301_370@ rAPIdJson::Writer<StringBuffer> writer(buffer); document.Accept(writer); cclOG( "%s" ,buffer.GetString()); |
打印结果
以上是内存溢出为你收集整理的Cocos2d-x 3.0 Json用法全部内容,希望文章能够帮你解决Cocos2d-x 3.0 Json用法所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)