zoukankan      html  css  js  c++  java
  • cocos2dx jsoncpp

    jsoncpp下载 http://sourceforge.net/projects/jsoncpp/

    下载解压后用到的是includejson下面的头文件跟srclib_json下的文件。

    导入头文件

    #include "json/json.h"

    解析json

    void parseJsoncpp()
    {
        /*{
            "name":"more-top",
                "age":27
        }*/
        unsigned long size;
        char *file = (char *)CCFileUtils::sharedFileUtils()->getFileData("jsoncpptest.json","r",&size);
        Json::Reader reader;
        Json::Value root;
        if (!reader.parse(std::string(file),root,false))
        {
            return ;
        }
        CCLog("jsoncpptest");
        
        std::string name = root["name"].asString();
        CCLog("name = %s",name.c_str());
    
        int age = root["age"].asInt();
        CCLog("name = %d",age);
    
    
        //---------------------------------------
        /*[
        {"name":"more11","age":100},
        {"name":"more22","age":101}
        ]*/
    
        file = (char *)CCFileUtils::sharedFileUtils()->getFileData("jsoncpptest2.json","r",&size);
        if (!reader.parse(std::string(file),root,false))
        {
            return ;
        }
        CCLog("jsoncpptest2");
    
        size = root.size();
        for (int i = 0; i < size; i++)
        {
            std::string name = root[i]["name"].asString();
            CCLog("name = %s",name.c_str());
    
            int age = root[i]["age"].asInt();
            CCLog("name = %d",age);
            
        }
    }

    输出:

    jsoncpptest
    name = more-top
    name = 27
    jsoncpptest2
    name = more11
    name = 100
    name = more22
    name = 101

    创建json

    void createJsoncpp()
    {
        //[{"age":18,"name":"cocos2dx"},{"age":20,"name":"Hello"}]
        Json::FastWriter writer;
        Json::Value root;
        Json::Value person;
    
        person["name"] = "cocos2dx";
        person["age"] = 18;
        root.append(person);
    
        person["name"] = "Hello";
        person["age"] = 20;
        root.append(person);
        string json_file = writer.write(root);
    
        CCLog("%s",json_file.c_str());
        char filePath[1024] = {''};
        memset(filePath,0,sizeof(filePath));
        strcat(filePath,CCFileUtils::sharedFileUtils()->getWritablePath().c_str());
        strcat(filePath,"writeJsoncpp.json");
    
        FILE *file = fopen(filePath,"w+");
        
        fwrite(json_file.c_str(),json_file.size(),1,file);
        fclose(file);
    
    }

    输出:
    [{"age":18,"name":"cocos2dx"},{"age":20,"name":"Hello"}]

  • 相关阅读:
    模仿Linux内核kfifo实现的循环缓存
    FFmpeg + SoundTouch实现音频的变调变速
    C++标准库实现WAV文件读写
    PHP写的一个轻量级的DI容器类(转)
    android App抓包工具的应用(转)
    Dell 服务器阵列扩容【经验分享(转)】
    hexo静态博客的安装及应用实践记录
    centos 6.5 升级php到5.6.17版本
    前端框架记录
    Virtual DOM 虚拟DOM的理解(转)
  • 原文地址:https://www.cnblogs.com/ycclmy/p/4274232.html
Copyright © 2011-2022 走看看