【已解决】求助关于 3.0 beta 版本的 json 库操作

3.0 alpha 1 的时候,还是jsoncpp, 可这 3.0 beta 之后居然是变 rapidjson 库了

虽然不说两者的优缺点,但是官方就没有一个说明文档,或者 sample 的吗?

我发现一直都没 json 相关的例子,但是框架中又有很多用到 json 的地方,因为大部分是读取 json, 这一步是解决了

可是写入json 的环节一直卡住了,一方面官方(google rapidjson)里也没有明确如何 write,另一方面 cocos2d-x 也没有案例

所以纠结啊……,求助啊

这篇文章可以帮到你:http://ju.outofmemory.cn/entry/28362
按文章说的,rapidjosn确实很神速的样子,不过,貌似rapidjson的作者(还是官方?)连文档都没写完,好纠结:10:

遇到同样的问题,不知道楼主解决了没有?

解析json的部分到是解决了,但是现在纠结于这个数据解析的架构,真心不想每个地方都写这些代码,以前的jsoncpp,易用性不错

虽然官方声称现在的rapidjson效率高,不过可能是写游戏写惯了,易用性成了我现在的首要问题,不然以后rapidjson再被其他json替代的话,这工程量大了

而且map和vector,还有value的使用,官方能否给我案例?编译就报错,还是报错在CCMap这些类里面……

====================================================================

我贴一段解析的代码,基本上就是笨木头给的地址,我干净了下

rapidjson::Document document;
document.SetObject();
rapidjson::Document::AllocatorType& allocator = document.GetAllocator();

rapidjson::Value array(rapidjson::kArrayType);

for (int i = 0; i < 10; i++)
{
    rapidjson::Value object(rapidjson::kObjectType);
    object.AddMember("id", 1, allocator);
    object.AddMember("name", "test", allocator);
    object.AddMember("version", 1.01, allocator);
    object.AddMember("vip", true, allocator);

    array.PushBack(object, allocator);
}

document.AddMember("title", "PLAYER INFO", allocator);
document.AddMember("players", array, allocator);

rapidjson::StringBuffer buffer;
rapidjson::Writer<rapidjson::StringBuffer> writer(buffer);

document.Accept(writer);

auto out = buffer.GetString();

CCLOG("out: %s", out);

我和你一样,心里想着既然cocox已经集成了json解析库,那就顺着它,它用哪种库我就跟着用哪种,没想到还是摔了一跤(只能怪自己喇,哈哈)

现在用rapidjson都自己再封装了一层了,以后想换就直接换,没那么辛苦,之前真是失策了 :10:

然后,Map、Vector、Value的使用官方有简单的例子,也算够用了:https://github.com/cocos2d/cocos-docs/blob/master/catalog/en.md (里面找找就有了)

数组格式的json 怎么读?