zoukankan      html  css  js  c++  java
  • python

    json基本格式
    """
    json格式 -> [{}, {}]:
        [{
            "name": "Bob",
            "gender": "male",
            "Birthday": "1995-10-18"
        },
        {
            "name": "Tom",
            "gender": "female"
            "Birthday": "1995-10-18"
        }]
    """
    

    在python中如何对json进行操作 (loads / dumps)
    • loads() -> json字符串转列表类型
    import json
    str = '''
        [{
            "name": "Bob",
            "gender": "male",
            "Birthday": "1995-10-18"
        },
        {
            "name": "Tom",
            "gender": "female",
            "Birthday": "1995-10-18"
        }]
    '''
    # 将json字符串转换为python的列表
    data = json.loads(str)
    print(type(data))  # -> list
    # 列表内部为字典类型
    print(type(data[0]))  # -> dict
    '''
    对于字典类型的获取:
        (1). 直接索引
        (2). 通过get()方法
        推荐使用get()方法,因为即使检索不到相应的键值对不会报错,会返回None,同时还可以为(可能)不存在的键指定默认的值
    '''
    # print(data[0]["gender"]) -> 返回对应值
    # print(data[0].get("gender")) -> 与上面返回值相同
    # print(data[0].get("hobby", "sport")) -> 无对应值,返回默认值sport
    # print(data[0]["hobby"]) -> 无对应值报错
    
    • dumps() -> 列表转字符串
    data = [{
                'name': 'Zhao',
                'gender': 'male',
                'birthday': '1992-10-18'
            }]
    ts = json.dumps(data)
    print(type(ts))  # -> str
    

    Tip

    使用dumps()方法时需要注意,当json中包含中文时,dumps()默认使用ascii对中文进行编码,当将json.dumps(data)直接输出到文件中时会显示中文的ascii编码

    # 需要指定文件的输出编码
    with open('data.json', 'w', encoding='utf-8') as f:
        # 同时指定参数ensure_ascii=False
        # indent=2是为了使得输出格式更美观
        f.write(json.dumps(data, indent=2, ensure_ascii=False))
    

    json作为字符串时,使用双引号!
    # 使用单引号,抛出json.decoder.JSONDecodeError
    tstr = '''
        [{
            'name': 'Bob',
            'gender': 'male',
            'Birthday': '1995-10-18'
        }]
    '''
    print(json.loads(tstr))
    
  • 相关阅读:
    squid开多端口代理的心得
    用ssh跑pppd(最简单的linuxvpn)
    Asterisk1.2编译与安装
    E1 CE1 PRI BRI T1 的区别
    asterisk卡常见问题(收集整理)
    CCProxy+Eborder开透明代理详细设置(附图文)
    iptables+NAT+squid 透明代理上网实现方案
    asterisk积累命令
    MySQL Cluster的常见问题
    如何配置Silverlight4开发环境
  • 原文地址:https://www.cnblogs.com/NFii/p/11646677.html
Copyright © 2011-2022 走看看