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))
    
  • 相关阅读:
    (转)【web前端培训之前后端的配合(中)】继续昨日的故事
    ural(Timus) 1136. Parliament
    scau Josephus Problem
    ACMICPC Live Archive 6204 Poker End Games
    uva 10391 Compound Words
    ACMICPC Live Archive 3222 Joke with Turtles
    uva 10132 File Fragmentation
    uva 270 Lining Up
    【转】各种字符串哈希函数比较
    uva 10905 Children's Game
  • 原文地址:https://www.cnblogs.com/NFii/p/11646677.html
Copyright © 2011-2022 走看看