• 爬虫学习(十五)——json解析


    json与jsonpath

    对象{}:jsonobject

    对象:对象在js中表现为{}括起来的内容,数据结构为{key:value,key:value...}键值对的结构,在面向对象的结构中,key为对象的属性,key所对应的value为对象的属性值。

    取值方式:对象.key 获取属性值,这个属性值的数据类型可以是数字、字符串、数据、对象等

     

    数组[]:JSONArray

    数组:在js中是中括号[]括起来的内容,数据结构类似此格式["Python", "javascript", "C++", ...]

    取值方式:类似python语言中的列表,使用索引进行取值,数组中的值可以是数字、字符串、数组、对象等

     

    json方法

    1、load()将数据加载成为json类型的数据

    读取json文件中的字符串,转化成为python数据类型

    如:

    obj = json.load(open('book.json', 'r', encoding='utf-8'))

    print(type(obj))

    2、loads()解码json字符串为json数据

    将json格式字符串解码转换成为python对象,从json到python的数据数据转化类型可以对照图表

     

    with open('./book.json',mode='r',encoding='utf-8') as f:

    json_string = f.read()

    # 将json格式字符串转化为对象

    obj = json.loads(json_string)

    print(type(obj))

    3、string串

    将json数据

    4、dumps()

    实现python数据类型转化成为json字符串,返回一个str对象,把python对象编码转换成为json字符串

    从python原始类型向json类型转化的对照表如下:

    如下:

    import json

    str = '''{"has_more": false, "message": "success", "data": [{"single_mode": true, "abstract": "u8c22u8c22u5927u5bb6u559cu6b22u6bcfu65e5u64b8"}]}'''

    print(type(str))

    print(json.dumps(str,ensure_ascii=False))

    5、dump

    将python类型序列化成json对象后写入文件

    如:

    import json

    dictStr = {"city": "北京", "name": "大刘",'info':'u8c22u8c22u5927'}

    # Serialize ``obj`` as a JSON formatted stream to ``fp

    json.dump(dictStr, open("dictStr.json","w",encoding='utf-8'), ensure_ascii=False,)

    6、练习总结

    import json
    # 将文件中的文件读取处理,输出的数据类型为流(字符序列)数据
    fp = open("json数据.json",mode="r",encoding="utf8")
    # 将流数据加载变成json类型的数据
    j = json.load(fp)
    print(j,type(j))
    # 输出结果:
    # {'book': [{'name': '时间简史', 'author': '斯蒂芬·威廉·霍金'}, {'name': '三国演义', 'author': '罗贯中'}]} <class 'dict'>


    # 将json类型的数据转化成为python的字符串类型的数据,并将中文的阿斯克码形式转化成中文
    a = json.dumps(j,ensure_ascii=False)
    print(a,type(a))
    # 输出结果
    # {"book": [{"name": "时间简史", "author": "斯蒂芬·威廉·霍金"}, {"name": "三国演义", "author": "罗贯中"}]} <class 'str'>

    # 创建一个json格式的文件
    fp2 =open("json练习二.json",mode="a",encoding="utf8")

    # 将json数据写入文件中,并将阿斯克码转换设置为False
    json.dump(j,fp2,ensure_ascii=False)
  • 相关阅读:
    这个开源组织里的项目都是精品
    动态代理大揭秘,带你彻底弄清楚动态代理!
    Python_对excel表格读写-openpyxl、xlrd&xlwt
    PostgreSQL 查看数据库,索引,表,表空间大小
    Mysql日志undo log、redo log、binlog、relay log
    python 高级
    win10 ssh 登录 ubuntu Access denied
    mysql5.7 ubuntu20.04
    pycharm 激活 成功
    Xmind:文件损坏怎么恢复
  • 原文地址:https://www.cnblogs.com/kuangkuangduangduang/p/10397832.html
Copyright © 2020-2023  润新知