Python中json, demjson的使用

json中常用的方法

在使用的时候先导入json库: import json

方法 描述
json.dumps() 将 Python 对象编码成 JSON 字符串
json.loads() 将已编码的 JSON 字符串解码为 Python 对象
json.dump() 将Python内置类型序列化为json对象后写入文件
json.load() 读取文件中json形式的字符串元素转化为Python类型

用法

  1. json.dumps()

    import json
    
    jsonStr = {'name':'zhangsan', 'age':13}
    
    # 将Python对象编码成json字符串
    print(json.dumps(jsonStr))
    

    {“name”: “zhangsan”, “age”: 13}

  2. json.loads()

    jsonStr = '{"name": "zhangsan", "age": "13"}'
    
    obj = json.loads(jsonStr)
    print(obj)
    print(obj["name"])
    

    {‘name’: ‘zhangsan’, ‘age’: ‘13’}
    zhangsan

  3. json.dump(), json.load()

    jsonStr = {'name':'zhangsan', 'age':13}
    with open('test.txt', 'w+') as f:
    	json.dump(jsonStr, f)
    
    with open('test.txt', 'r+') as f:
    	print(json.load(f))
    

    {‘name’: ‘zhangsan’, ‘age’: 13}

注意点

  1. 对于正常的json字符串,使用json.loads()可以获得Python字典对象

    jsonStr = '{"name":"zhangsan", "age":13}'
    print(json.loads(jsonStr))
    

    {‘name’: ‘zhangsan’, ‘age’: 13}

  2. 对于其它格式的json字符串,就无法正常解析了

    jsonStr = "{'name':'zhangsan', 'age':13}"
    print(json.loads(jsonStr))
    

    TypeError: the JSON object must be str, bytes or bytearray, not ‘dict’

  3. 解决方法, 引入demjson库: import demjson

    jsonStr = "{'name':'zhangsan', 'age':13}"
    jsonStr1  = demjson.encode(demjson.decode(jsonStr))
    print(json.loads(jsonStr1))
    print(json.loads(jsonStr1)["name"])
    

    {‘age’: 13, ‘name’: ‘zhangsan’}
    zhangsan

你可能感兴趣的:(Python)