要求调用外部提供的接口,接收一堆json字符串,再按照这个字符串,创建数据表,再解析这个json字符串,创建javabean,写insert sql,把数据一条条插入数据表中。
由于字段名多达几十个,所以决定用python来解析字符串,直接输出一些重复性代码。
json字符串:
转换后的数据库字段名(喜欢小写的可以全部转成小写):
代码:
# json字符串转换为数据库里的字母大写+下划线命名 def readTxt(): file = 'resource/JsonString.txt' # w模式表示:如果没有这个文件,创造一个文件。每次运行都覆盖之前的内容。 # 如果想要追加,而不是覆盖,请使用a+模式。 wirteFile = open('resource/jsonName.txt','w',encoding='utf-8') with open(file, 'r',encoding='utf-8') as f: # 读取到每一行的内容 data = f.readlines() count = 0; for eachLine in data : wirteFile.write("-----------------分割线------------\n") str_ = eachLine # 去掉首尾的{} str_ = str_[1:len(str_)-1] if count < len(data): # 只要不是最后一行 都会有个换行符 所以在去掉一个字符 str_ = str_[0:len(str_) - 1] count = count +1 strArray = str_.split(",") for eachKeyValue in strArray: keyStr = eachKeyValue.split(":")[0] valueStr = eachKeyValue.split(":")[1] key = keyStr.replace('"',"") value = valueStr.replace('"', "") newKey = "" num = 0 for i in key: # 首字母转大写 if num == 0: newKey = i.upper() elif num>0: # 遇到大写 加个下划线 if i.isupper(): newKey = newKey+"_"+i # 顺便把其他的英文字符也大写 elif i.islower(): newKey = newKey + i.upper() # 数字、特殊字符使用原装 else: newKey = newKey+i num = num+1 wirteFile.write(newKey+":"+value+"\n") readTxt()
也可以拼接字符串直接写建表的sql。
表建好了,其他的java bean啊sql可以用mybatis 逆向工程自动生成哦,也可以再写个python程序处理。