欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Python——JSON 模块

程序员文章站 2024-02-03 10:22:58
...

1. json 与 python 数据类型转换

具有read()或者write()方法的对象就是类文件对象, f = open(“a.txt”,”r”) f 就是类文件对象

  • json.loads 把json字符串转化为python类型
  • json.dumps能够把python类型转化为json字符串,在写入文件的时候可以定义格式。ensure_ascii=False 解决中文不能显示的问题, indent=4 格式化写入
  • json使用注意点
    • json中的字符串都是双引号引起来的
      • 如果不是双引号
        • eval:能实现简单的字符串和python类型的转化
        • replace:把单引号替换为双引号
    • 往一个文件中写入多个json串,不再是一个json串,不能直接读取
      • 一行写一个json串,按照行来读取

2. 代码示例

import requests
# pprint 格式化输出
from pprint import pprint
import json

headers = {
    "User-Agent": "Mozilla/5.0 (iPad; CPU OS 11_0 like Mac OS X) AppleWebKit/604.1.34 (KHTML, like Gecko) Version/11.0 Mobile/15A5341f Safari/604.1",
    "Cookie": 'll="108288"; bid=sJsLF5EFmNU; __utma=30149280.1153899539.1547884621.1547884621.1547884621.1; __utmc=30149280; __utmz=30149280.1547884621.1.1.utmcsr=google|utmccn=(organic)|utmcmd=organic|utmctr=(not%20provided); ap_v=0,6.0; _vwo_uuid_v2=D2FC899ECDFDF067F8A1D9361C62E08BF|dcde25b86f8f06e240c52f1184de892e; __utmb=30149280.3.10.1547884621; talionnav_show_app="0"; Hm_lvt_6d4a8cfea88fa457c3127e14fb5fabc2=1547885758; _ga=GA1.3.1153899539.1547884621; _gid=GA1.3.269528931.1547885758; Hm_lpvt_6d4a8cfea88fa457c3127e14fb5fabc2=1547887119',
    "Referer": "https://m.douban.com/movie/"
}
response = requests.get('https://m.douban.com/rexxar/api/v2/subject_collection/movie_showing/items?&start=0&count=8&loc_id=108288', headers=headers)
data = response.content.decode()
# json.loads 把json字符串转化为python类型
dict = json.loads(data)
# pprint(dict)

# json.dumps能够把python类型转化为json字符串,在写入文件的时候可以定义格式
# ensure_ascii=False 解决中文不能显示的问题, indent=4 格式化写入
with open('douban.json', 'w', encoding='utf-8') as f:
    f.write(json.dumps(dict, ensure_ascii=False, indent=4))


with open('douban.json', 'r', encoding='utf-8') as f:
    file_data = f.read()
    json_data = json.loads(file_data)
    # pprint(json_data)


# 使用json.load提取类文件对象中的数据
with open('douban.json', 'r', encoding='utf-8') as f:
    load_data = json.load(f)
    print(load_data)
    print(type(load_data)) # <class 'dict'>

# json.dump能够把python类型放入类文件对象中
with open('douban1.json', 'w', encoding='utf-8') as f:
    json.dump(dict, f, ensure_ascii=False, indent=4)
复制代码

转载于:https://juejin.im/post/5c42e87851882525a27fdf7d