python将json转换成lua

本文分享了一段Python代码,能将目录下所有JSON文件批量转换为Lua格式,适用于游戏开发中配置文件的格式转换需求。

废话不多说,直接上代码:

# -*- coding:utf-8 -*-
import json
import types
import sys
import os
import os.path
def space_str(layer):
	lua_str = ""
	for i in range(0,layer):
		lua_str += '\t'
	return lua_str
 
def dic_to_lua_str(data,layer=0):
	d_type = type(data)
	if  d_type is types.StringTypes or d_type is str or d_type is types.UnicodeType:
		return "'" + data + "'"
	elif d_type is types.BooleanType:
		if data:
			return 'true'
		else:
			return 'false'
	elif d_type is types.IntType or d_type is types.LongType or d_type is types.FloatType:
		return str(data)
	elif d_type is types.ListType:
		lua_str = "{\n"
		lua_str += space_str(layer+1)
		for i in range(0,len(data)):
			lua_str += dic_to_lua_str(data[i],layer+1)
			if i < len(data)-1:
				lua_str += ','
		lua_str += '\n'
		lua_str += space_str(layer)
		lua_str +=  '}'
		return lua_str
	elif d_type is types.DictType:
		lua_str = ''
		lua_str += "\n"
		lua_str += space_str(layer)
		lua_str += "{\n"
		data_len = len(data)
		data_count = 0
		for k,v in data.items():
			data_count += 1
			lua_str += space_str(layer+1)
			if type(k) is types.IntType:
				lua_str += '[' + str(k) + ']'
			else:
				lua_str += k 
			lua_str += ' = '
			try:
				lua_str += dic_to_lua_str(v,layer +1)
				if data_count < data_len:
					lua_str += ',\n'
 
			except Exception, e:
				print 'error in ',k,v
				raise
		lua_str += '\n'
		lua_str += space_str(layer)
		lua_str += '}'
		return lua_str
	else:
		print d_type , 'is error'
		return None

if __name__ == "__main__":
    rootdir = sys.argv[1]
    for parent,dirnames,filenames in os.walk(rootdir):
        for filename in filenames:
            extra_name = filename.split('.')[-1]
            if(str.find(extra_name,"json") == 0):
                dstfilename = os.path.join(parent,filename)
                with open(dstfilename) as file_obj:
                    content = file_obj.read()
                    dest_file = os.path.join(parent,filename.split('.')[0] + ".lua")
                    pf = open(dest_file,"w")
                    pf.write(filename.split('.')[0] + " = " + dic_to_lua_str(json.loads(content)))

通过以上代码就能批量将json转换成lua了

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值