• python中的JSON


    # -*- coding:utf-8 -*-
    # author : Keekuun
    
    """
    JSON: 不同语言之间的传递对象
    JSON            python  数据类型对应关系
    
    {}              dict
    []              list
    "string"        str
    123.6           int/float
    true/false      True/False
    null            None
    """
    
    import json
    
    """注意py文件名不可用json.py命名,否则回报错:module 'json' has no attribute 'dumps'"""
    
    # python中的dict
    d = {'name': 'Bob', 'age': 20}
    # dumps()方法返回一个str,内容就是标准的JSON。类似的,dump()方法可以直接把JSON写入一个file-like Object。
    dict2json = json.dumps(d)
    print(dict2json)  # {"name": "Bob", "age": 20}
    print(type(dict2json))  # <class 'str'>
    
    # 把JSON反序列化为Python对象,用loads()或者对应的load()方法,loads()把JSON的字符串反序列化,load()从file-like Object中读取字符串并反序列化
    json2dict = json.loads(dict2json)
    print(json2dict)  # {'name': 'Bob', 'age': 20}
    
    
    # json高级用法
    # 将Student实例变为一个JSON的{}对象
    
    class Student:
        def __init__(self, name, age, score):
            self.name = name
            self.age = age
            self.score = score
    
    
    st = Student('Bob', 20, 100)
    
    
    # 第一种方法,自定义函数
    def st2dict(std):
        d = {'name': std.name, 'age': std.age, 'score': std.score}
        return d
    std2json1 = json.dumps(st, default=st2dict)
    print(std2json1)

    # 第二种方法,用类的__dict__方法
    # 通常class的实例都有一个__dict__属性,它就是一个dict,用来存储实例变量。也有少数例外,比如定义了__slots__的class。
    std2json2 = json.dumps(st, default=lambda obj: obj.__dict__)
    print(std2json2)


    # 把JSON反序列化为一个Student对象实例,loads()方法转换出dict对象,传入object_hook函数负责把dict转换为Student实例:
    def dict2student(d):
    return Student(d['name'], d['age'], d['score'])


    json_str = '{"age": 20, "score": 88, "name": "Bob"}'
    print(json.loads(json_str, object_hook=dict2student))
    明月装饰了你的窗子,你装饰了他的梦。
  • 相关阅读:
    opencv-0-项目启程
    [SketchUp]-绘制自己的家
    C51_PID 水温控制系统
    latex-列表环境
    nCOV 数据简要分析 (0326)
    引入OpenCV导致私有内存巨大
    【带着canvas去流浪(15)】threejs fundamentals翻译系列1-scene graph
    【一统江湖的大前端(9)】TensorFlow.js 开箱即用的深度学习工具
    【一统江湖的大前端(8)】matter.js 经典物理
    2019年12月前端面经及总结(西安,杭州)
  • 原文地址:https://www.cnblogs.com/zkkysqs/p/9398484.html
Copyright © 2020-2023  润新知