python解析Json文件

项目背景:某网吧位置图信息保存为json字符串,放入门店表中。尝试将json解析获取门店座位信息。

解决思路: python连接数据库,读取报表中的json及门店编码字段

代码如下:

import pandas as pd
import demjson
import pymysql
import json 


## 定义连接数据库函数
def my_db(host,user,passwd,db,sql,port= 3306,charset = 'utf8'):
    coon = pymysql.connect(host=host,
                           port=port,
                           user=user,
                           passwd = passwd,
                           db = db,
                           charset = charset
                           )
    cur = coon.cursor()
    cur.execute(sql)
    if sql.strip()[:6].upper() == 'SELECT':
        res = cur.fetchall()
    else:
        coon.commit()
        res = 'ok'
    cur.close()
    coon.close()
    return res



#解析json代码
def json_read(text,com_code):
    comcodeList =[]
    AreaNameList =[]
    AreaPriceList =[] 
    AreaTagsList =[] 
    RoomsnumList =[]   
    object_len =len(text)
    for i in range(0,object_len):
        AreaName = text[i]['realAreaName']
        AreaPrice = text[i]['realAreaReferencePrice']
        try:            
            AreaTags = text[i]['realAreaTags']
        except BaseException:
            AreaTags = ''
        Roomsnum = len(text[i]['rooms'])
        RoomName =text[i]['rooms'][j]['roomName']
        comcodeList.append(com_code)
        AreaNameList.append(AreaName)
        AreaPriceList.append(AreaPrice)
        AreaTagsList.append(AreaTags)
        RoomsnumList.append(Roomsnum)

    guodu ={"comcode" :comcodeList,            
            "AreaName" :AreaNameList,
            "AreaPrice" :AreaPriceList,
            "AreaTags" :AreaTagsList,
            "Roomsnum" :RoomsnumList }
    data = pd.DataFrame(guodu)
    return data

##获取commcode 和 json 数据
sql = "select *  from shop"
res = my_db('xxx.xxx.xxx.xxx','root','xxxx','xxx',sql)



## 元组的第二个元素为json代码
dic ={}
final_frame = pd.DataFrame(columns = ["comcode", "AreaName", "AreaPrice", "AreaTags", "Roomsnum"])
for i in range(0,len(res)):
    dic[res[i][0]] = res[i][1]  #res返回的是sql查询的结果,第一列设置为键名,第二列是json文本
    json_test =json.loads(res[i][1])
    temp_frame = json_read(json_test,res[i][0])
    final_frame = pd.concat([final_frame,temp_frame],axis=0,ignore_index=True)
    print(i,res[i][0])

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值