python递归多层json,将之处理为插入表格的sql语句

本文介绍如何使用Python处理四层深度的JSON数据,并将其转化为INSERT INTO SQL语句。首先,通过计算'{'和'}'的数量确定JSON的层数。接着,递归解析JSON,生成字段名-数据对。最后,将结果处理为SQL格式的插入语句。代码已给出,但未经4层以上数据测试,需谨慎使用。
摘要由CSDN通过智能技术生成

处理的原始json总共有四层,长下面这个样子:

                                  

要求:(1)给定要解析的层数,要解几层解几层,若内层还有对象,则整个对象作为统一字符串处理

(2)将解析出的json处理成insert语句,即insert into table_name(xxxx,xxxx,xxx)values(xxxx,xxxx,xxx)

实现过程:

(1)先写一个函数用来判断所给的json的层数,思路就是将json读取为字符串,并将'{'的位置存为列表pos1,然后读取第一个'}'的位置pos2,遍历列表pos1,当pos2首次小于pos1中i位置处的元素时,i就是层数,如果一直不小于,那么pos1的长度就是json的层数。

def get_json_nums_of_layers(file_path):
    fo=open(file_path,'r',encoding='utf-8')
    jsonstr = fo.read()#将json作为整个的字符串读取进去
    pos1=list()#用于存放
    for m in re.finditer('{', jsonstr):
        pos1.append(m.start())
#     print(pos1)
    pos2=jsonstr.find('}')
#     print(pos2)
    for i in range(len(pos1)):
        if pos1[i]>pos2:
            return i
        else:
            return len(pos1)
    fo.close()

(2)递归处理json,将之处理成字段名:数据  的格式,因为是用递归来处理的,所以要确定好递归结束的条件,思路就不说了,递归这种东西都是debug后慢慢调试出来的。可能是我这种技术渣的人的傻子处理方式吧,hhhhh

def get_json(file_path,nums_layer_toget,file_path_to_write):
    s=''#s是用于放字段名的
    v=''#v用于放记录的
    ff=open(file_path_to_write,'w',encoding='utf-8')
    obj={}
    num=1
    if(nums_layer_toget>get_json_nums_of_layers(file_path)):
        print("所要解析的层数超过该json拥有的层数!请修正")
    else:
        fo=open(file_path,'r',encoding='utf-8')
        jsonstr = fo.read()
        jsonstr=js.loads(jsonstr)
        get_json_operation('list',jsonstr, nums_layer_toget,obj,ff,s,v)
    ff.close()
    fo=open(file_path_to_write,'r',encoding='utf-8')
    ff=open('C:\\Users\\pt0521\\Desktop\\liyang.txt','w',encoding='utf-8')
    line=fo.readline()
    while line:           
   
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值