json 转lua的脚本

在cocos2d-x quick使用cocosstudo导出的json格式文件配置时候, 由于存在json转lua table这个过程导致加载界面非常的慢 于是想直接使用lua格式的配置效率不是要高很多嘛。于是写了个对应的脚本。


 

#!/usr/bin/python

#coding=utf-8

#by leaveMeAlone

import json

import os

import os.path



import sys

reload(sys)

sys.setdefaultencoding('utf-8')


rootdir  = os.getcwd()


def getSpace(indent):

    space = ""

    for i in range(0,indent):

        space = space + "    "

    return space


def mwrite(file ,v,indent,k):

    mt = type(v)

    if k == 0 :

        k = ""

    else :

        if k.find("@xml") !=-1 : #过滤掉xml格式转的json文件的xml描述信息

            return

        k = str(k)+" = "

#    print("type",mt,k,v)

    if mt == int or mt ==float :

        mstr  = getSpace(indent)+k+str(v)+",\n"

        file.write(mstr)

    elif mt == bool :

        mstr  = getSpace(indent)+k+str(v).lower()+",\n"

        file.write(mstr)

    elif mt == unicode:

        v=v.replace('"',"'")

        mstr  = getSpace(indent)+k+'"'+str(v)+'"'+",\n"

        file.write(mstr)

    elif mt == dict :

        mstr = getSpace(indent)+k+"{\n"

        file.write(mstr)

        for (k,v) in v.items():

            mwrite(file,v,indent+1,k)

        if indent == 1 :

            mstr= getSpace(indent)+"}\n"

        else :

            mstr= getSpace(indent)+"},\n"

        file.write(mstr)

    elif mt == list :

        mstr = getSpace(indent)+k+"{\n"

        file.write(mstr)

        for i in v:

            mwrite(file,i,indent+1,0)

        if indent == 1 :

            mstr= getSpace(indent)+"}\n"

        else :

            mstr= getSpace(indent)+"},\n"

        file.write(mstr)


    else:

        print("else type",mt)



def changefile(infile,outfile):

    print(infile)

    f = file(infile)

    jsonobj = json.load(f)

    luaData = open(outfile, 'w')

    luaData.write("return\n")

    

    mwrite(luaData,jsonobj,1,0)

    

    f.close

    luaData.close



for parent,dirnames,filenames in os.walk(rootdir):    #三个参数:分别返回1.父目录 2.所有文件夹名字(不含路径) 3.所有文件名字

    for name in filenames:

        if name.endswith(".json"):

            newname = os.path.splitext(name)[0]

            title = "outlua"

            new_path = os.path.join(rootdir, title)

            if not os.path.isdir(new_path):

                os.makedirs(new_path)

            output =new_path+'/'+newname+".lua"

            changefile(name,output)



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值