您当前的位置: 首页 >  Python

IT之一小佬

暂无认证

  • 2浏览

    0关注

    1192博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

python中json的使用

IT之一小佬 发布时间:2021-01-06 00:42:27 ,浏览量:2

1、json.dumps()、json.dump()、json.loads()和json.dumps()的区别:
  • json.dumps()用于将字典形式的数据转化为字符串
  • json.loads()用于将字符串形式的数据转化为字典

详见博文:json.dumps()、json.dump()、json.loads()和json.dumps()的区别_IT之一小佬的博客-CSDN博客

代码如下:

import json

dict1 = {'A': 'a', 'B': 'b', 'C': 'c'}
print(type(dict1))
print(dict1)

#  python编码为json类型,json.dumps()
en_json = json.dumps(dict1)
print(type(en_json))
print(en_json)

#  json解码为python类型, json.loads()
de_json = json.loads(en_json)
print(type(de_json))
print(de_json)

#  eval()解析json
dict2 = {'X': 'x', 'Y': 'y', 'Z': 'z'}
en_json = json.dumps(dict2)
de_json = eval(en_json)
print(type(de_json))
print(de_json)

运行结果:


{'A': 'a', 'B': 'b', 'C': 'c'}

{"A": "a", "B": "b", "C": "c"}

{'A': 'a', 'B': 'b', 'C': 'c'}

{'X': 'x', 'Y': 'y', 'Z': 'z'}
2、处理request请求返回的json数据:

有2中方法可以处理request返回的数据:

1.对request发起请求返回的响应对象进行.json()操作,.json操作返回的是一个字典类型(如果返回的结果为空时则会报错),如下:

2.对request请求得到的响应对象中的text数据进行json.loads(text)操作,操作后返回的是字典类型(建议使用这种方法,使用前判断text是否为空,为空也会报错),如下:

3、在python中使用json格式存储数据 

示例代码:

import json
 
list1 = [{'A': [1, 2, 3, 4, 5, 6], 'B': [3, 4, 5, 6, 7]},
         {'C': '123', 'D': '234'}]
 
#  将数据写入文件
file = open('json_demo.json', 'w')
for i in list1:
    json_i = json.dumps(i)
    file.write(json_i + '\n')
file.close()
 
#  从文件中读取数据
get_data = []
with open('json_demo.json', 'r') as f:
    #  读取数据并分割,最后一个为空,所以去除
    new_list = f.read().split('\n')[:-1]
    for x in new_list:
        json_x = json.loads(x)
        print(type(json_x))
        get_data.append(json_x)
f.close()
 
print(f'原始数据为:{list1}')
print(f'结果数据为:{get_data}')

运行结果:



原始数据为:[{'A': [1, 2, 3, 4, 5, 6], 'B': [3, 4, 5, 6, 7]}, {'C': '123', 'D': '234'}]
结果数据为:[{'A': [1, 2, 3, 4, 5, 6], 'B': [3, 4, 5, 6, 7]}, {'C': '123', 'D': '234'}]
4、对json数据进行转义

使用json在线转义工具:JSON在线 | JSON解析格式化—SO JSON在线工具

使用代码进行转义,示例代码如下:

import json


dic = {'name': 'dgw', 'sex': '男', 'age': 26, 'grade': [{'语文': 96}, {'数学': 99}]}
print(dic)

# json数据是双引号
json_dic = json.dumps(dic, ensure_ascii=False)
print(json_dic)

# 对json_dic数据进行转义
json_dic_escape = json.dumps(json_dic, ensure_ascii=False)
print(json_dic_escape)

# 对dic数据中某个字段单独转义
dic['grade'] = json.dumps(dic['grade'], ensure_ascii=False)
json_dic_escape2 = json.dumps(json.dumps(dic, ensure_ascii=False), ensure_ascii=False)
print(json_dic_escape2)

# 对json_dic_escape2数据进行转义解码
json_dic_escape_decode = json.loads(json_dic_escape2)
print(json_dic_escape_decode)

with open('text.txt', 'a', encoding='utf-8') as f:
    f.write(str(dic) + '\n')
    f.write(json_dic + '\n')
    f.write(json_dic_escape + '\n')
    f.write(json_dic_escape2 + '\n')
    f.write(json_dic_escape_decode + '\n')

运行结果:

注意:控制台有时候打印的转义符号和写入文件中的转义符号有区别!

关注
打赏
1665675218
查看更多评论
立即登录/注册

微信扫码登录

0.0481s