Cocos2d-x的生成Json文件的方法(续上续,哈哈)

1、Json生成工具升级版

本次Json生成工具升级版是经过封装,只需传入2个vector和1个int值即可完成Json文件的生成。

2、具体代码

1).h文件

#include "cocos2d.h"
#include "../cocos2d/external/json/document.h"
#include "../cocos2d/external/json/writer.h"
#include "../cocos2d/external/json/stringbuffer.h"

USING_NS_CC;
using namespace rapidjson;

class JsonMake : public Ref
{
public:
    CREATE_FUNC(JsonMake);
    virtual bool init();
    std::string getJsonMyBaodanMain(const std::vector<std::string>& strName,const std::vector<std::string>& strContent,const int count);
};

2).cpp文件

#include "JsonMake.h"
bool JsonMake::init()
{
    bool bRet = false;
    do{

        bRet = true;
    }while(0);
    return bRet;
}

std::string JsonMake::getJsonMyBaodanMain(const std::vector<std::string>& strName,const std::vector<std::string>& strContent,const int count)
{
    rapidjson::Document document;
    document.SetObject();
    CCASSERT(strName.size() == strContent.size(), "strName.size() != strContent.size()");
    log("strName.size = %lu,strContent.size = %lu",strName.size(),strContent.size());
    rapidjson::Document::AllocatorType& allocator = document.GetAllocator();
    rapidjson::Value objectROOT(rapidjson::kArrayType);
    log("count = %d",count);
    for(int i = 0; i < count; i++)
    {
        rapidjson::Value object(rapidjson::kObjectType);
        for(int j = 0 ; j < strName.size(); j++)
        {
            object.AddMember(strName.at(j).c_str(), strContent.at(j).c_str(), allocator);
        }
        objectROOT.PushBack(object,allocator);
    }

    document.AddMember("info", objectROOT, allocator);
    StringBuffer buffer;
    rapidjson::Writer<StringBuffer> writer(buffer);
    document.Accept(writer);
    log("%s",buffer.GetString());
    return StringUtils::format("%s",buffer.GetString());
}

3、使用方法

只需在HelloWorldScene.cpp中的init函数中添加如下代码:

        auto path = FileUtils::getInstance()->getWritablePath();
        log("path = %s",path.c_str());
        path.append("myBaodanMain.json");
        FILE* fp = std::fopen(path.c_str(), "at+");
        CCASSERT(fp != NULL, "file open error");

        auto jsonMake = JsonMake::create();
        std::vector<std::string> strName = getStrName();
        std::vector<std::string> strContent = getStrContent();
        auto str = jsonMake->getJsonMyBaodanMain(strName,strContent,10);
        auto length = str.length();
        fwrite(str.c_str(), length, 1 ,fp);
        fclose(fp);

然后再添加以下两个函数的定义,当然在.h中的声明是必不可少的呀!

std::vector<std::string> HelloWorld::getStrName()
{
    std::vector<std::string> strName;
    strName.push_back("baodanTitle");
    strName.push_back("baodanStatue");
    strName.push_back("insuranceName");
    strName.push_back("takeEffectTime");
    strName.push_back("timeLimit");
    strName.push_back("saleUnit");
    strName.push_back("institutionAddress");
    strName.push_back("toubaoPerson");
    strName.push_back("beibaoPerson");
    strName.push_back("forehead");
    strName.push_back("premium");

    return strName;
}

std::vector<std::string> HelloWorld::getStrContent()
{
    std::vector<std::string> strContent;
    strContent.push_back("保单号");
    strContent.push_back("保单状态");
    strContent.push_back("险种名称");
    strContent.push_back("生效日期");
    strContent.push_back("保险期限");
    strContent.push_back("销售单位");
    strContent.push_back("机构地址");
    strContent.push_back("投保人");
    strContent.push_back("被保人");
    strContent.push_back("保额");
    strContent.push_back("保费");

    return strContent;
}

4、结果

时间: 2024-10-14 23:16:27

Cocos2d-x的生成Json文件的方法(续上续,哈哈)的相关文章

Cocos2d-x的生成Json文件的方法(续)

本文承接自前文:http://blog.csdn.net/yuxikuo_1/article/details/39155335 1.JsonMake类 //.h #include "cocos2d.h" #include "../cocos2d/external/json/document.h" #include "../cocos2d/external/json/writer.h" #include "../cocos2d/exter

调试SQLSERVER (一)生成dump文件的方法

调试SQLSERVER (一)生成dump文件的方法 调试SQLSERVER (二)使用Windbg调试SQLSERVER的环境设置调试SQLSERVER (三)使用Windbg调试SQLSERVER的一些命令 我们知道调试程序主要有两种方法 一种是:live debugging (附加进程 使进程hang住) 生产环境最好不要live debugging 一种是:post-mortem debugging or reading dump files (生成dump文件然后进行分析) 现在介绍一

最有效的php生成pdf文件的方法,html转pdf文件方法

之前有个客户需要把一些html页面生成pdf文件,然后我就找一些用php把html页面围成pdf文件的类.方法是可谓是找了很多很多,什么html2pdf,pdflib,FPDF这些都试过了,但是都没有达到我要的求. pdflib,FPDF这两个方法是需要编写程序去生成pdf的,就也是讲不支持直接把html页面转换成pdf:html2pdf这个虽然可以把html页面转换成pdf文件,但是它只能转换一般简单的html代码,如果你的html内容要的是通过后台新闻编辑器排版的那肯定不行的. 纠结了半天,

Servlet中生成json文件,echarts模板调用

在echarts官网中下载的模板数据都是固定的,而我的项目需要数据是动态改变的,所以我试了很多方法来解决这个问题,其中成功的一种方法是在Servlet中先生成json数据格式,之后再把内容写到一个json文件中,在HTML中在调用这个json文件就可以了. 先生成json数据格式 JSONObject q1 = new JSONObject(); JSONObject q2 = new JSONObject(); JSONObject q3 = new JSONObject(); JSONObj

C#解析json文件的方法

C# 解析 json JSON(全称为JavaScript Object Notation) 是一种轻量级的数据交换格式.它是基于JavaScript语法标准的一个子集. JSON采用完全独立于语言的文本格式,可以很容易在各种网络.平台和程序之间传输.JSON的语法很简单,易于人阅读和编写,同时也易于机器解析和生成. JSON与XML的比较◆可读性 JSON和XML的可读性相比较而言,由于XML提供辅助的标签,更加适合人阅读和理解.◆文件大小与传输 XML允许使用方便的标签,所以文件尺寸是要比J

python中处理json文件的方法函数

1.json.loads() 将json字符串,转变为python中的“字典”类型 import json #json串是一个字符串f = open('product.json',encoding='utf-8') res=f.read() product_dic=json.loads(res) print(product_dic) 运行结果: 2.json.load() 读取文件进行处理,同样是将文件中的json字符串转换为字典类型 import json #json串是一个字符串f = op

MDK5生成BIn文件的方法

配置MDK5 生成bin文件的 第一步:方法打开option for Target 第二步:选择 user 第三步:找到After Build/Rebuild 第四步:勾选run,点击文件选择小图标选择fromelf.exe,在后面加命令 --bin -o ./Obj/@L.bin ./Obj/@L.axf.其中./Obj是MDK5中配置的中间文件的产生目的地址.其实就是.axf输出的路径而已. 然后编译,就会在对应的目录地下看到对应的BIN文件. 原文地址:https://www.cnblog

Java解析JSON文件的方法(一)

一.首先需要在Eclipse工程中导入相关的jar包,jar包参见链接:http://yunpan.alibaba-inc.com/share/link/NdA5b6IFK 二.提供一份待解析的json文件,apkinfo.json如下: [ { "name":"帐号", "package_name":"com.android.account", "check_version":"1.2"

PHP中生成json信息的方法

1 <?php 2 3 //php中生成json信息 4 //json_encode(数组/对象) 5 6 $color = array('red','blue','green'); //[索引数组] 7 echo json_encode($color),"<br />"; //["red","blue","green"] 8 9 $animal = array('east'=>'tiger','nor