cocos2d-x lua 3.6 解析json

来源:互联网 发布:cf网络异常又非法模块 编辑:程序博客网 时间:2024/05/29 19:12

cocos2d-x lua 解析json


在游戏开发过程中经常使用json文件作为存储本地数据的文件,这里介绍下cocos2d-x lua 3.6中如何使用json文件。

思路:

  1. 将json文件当作文本导入到程序中
  2. 通过引擎提供的json库解析json数据文件为table

代码

    local str = cc.FileUtils:getInstance():getStringFromFile(config_file_name)    local data = json.decode(str)    self.data_ = data    for k,val in ipairs(data) do        table.foreach(val,function(i, v) print (i, v) end)    end

读取的json文件

[    {"id":1,"name":"dici","json":"dici.ExportJson","plist":"dici0.plist","png":"dici0.png"},    {"id":2,"name":"ForeAnimation","json":"ForeAnimation.ExportJson","plist":"ForeAnimation0.plist","png":"ForeAnimation0.png"}]

附加一段自动读取cocos的骨骼动画文件为json数据文件的python脚本.这个脚本的功能是自动查找当前文件夹,以及其子目录中的骨骼动画文件,并按照指定的格式在当前目录导出json文件。

#coding=utf-8import os,sys,reimport jsonfile_path = []def getNameList(dir,wildcard,recursion):    exts = wildcard.split(" ")    files = os.listdir(dir)    for name in files:        fullname = os.path.join(dir,name)        if os.path.isdir(fullname) & recursion:            getNameList(fullname,wildcard,recursion)        else:            for ext in exts:                if(name.endswith(ext)):                    file_path.append(fullname)                    #print(fullname)                    breakclass AnimationData:    id = -1    name = ""    image_name = ""    plist_name = ""    json_name = ""    def __init__(self,id,name,image_name,plist_name,json_name):        self.id = id        self.image_name = image_name        self.plist_name = plist_name        self.json_name = json_name        self.name = name    def getDictionary(self):        ret = {}        ret["id"] = self.id        ret["name"] = self.name        ret["image"] = self.image_name        ret["plist"] = self.plist_name        ret["json"] = self.json_name        return retdef run():    getNameList(sys.path[0],".ExportJson",1)    file_name_list = file_path    resList = []    id = 1    for file_name in file_name_list:        a = file_name.find(".ExportJson")        if a<>-1:            json_name = file_name.split("\\")[-1]            #print json_name            name = json_name.split(".")[0]            #print name            image_name = ("%s0.png")%(name)            plist_name = ("%s0.plist")%(name)            res = AnimationData(id,name,image_name,plist_name,json_name)            resList.append(res)            id += 1    print id    l_out = []    for ani in resList:        l_out.append(ani.getDictionary())    print l_out    encode_json = json.dumps(l_out)    print encode_json    abs_path = os.path.abspath(sys.argv[0])    abs_path_list = abs_path.split("\\")    length = len(abs_path_list)    out_path = ""    for index,value in enumerate(abs_path_list):        if index >= length - 1:            break        if index == 0:            out_path = ("%s\\"%(value))        else:            out_path = ("%s%s\\"%(out_path,value))    out_path = ("%s%s"%(out_path,"AnimationConfig.json"))    print out_path    f = open(out_path,"w")    f.write(encode_json)    f.close()if __name__ == "__main__":    run()
0 0
原创粉丝点击