python

关注公众号 jb51net

关闭
首页 > 脚本专栏 > python > Python json序列化

Python json序列化解读

作者:jay丿

这篇文章主要介绍了Python json序列化解读,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教

json 模块

json 序列化 基本使用方式

序列化

import json
ls = [{"name": "张三", "age": 20}, {"name": "李四", "age": 22}]
jsonstr = json.dumps(ls)
print(jsonstr)

dumps 方法中的参数

ls = [{"name": "张三", "age": 20, (1,2): 100, None: 1}, {"name": "李四", "age": 22}]
jsonstr = json.dumps(ls, skipkeys=True)
print(jsonstr)
ls = [{"name": "张三", "age": 20, (1,2): 100, None: 1}, {"name": "李四", "age": 22}]
jsonstr = json.dumps(ls, skipkeys=True, ensure_ascii=False)
import json

class Person:
    def __init__(self, name, age):
        self.name = name
        self.age = age


if __name__ == '__main__':
 
    p1 = Person(name="张三", age=20)    #  p1.__dict__ :  可以获取一个对象的 字典表示形式。
    p2 = Person(name="李四", age=21)
    p3 = Person(name="王五", age=22)
    p4 = Person(name="赵六", age=20)
    person_list = [p1, p2, p3, p4]
    # 使用 JSON 序列化 将数据 转成 JSON字符串
    json_string = json.dumps(person_list, ensure_ascii=False, default=lambda obj: obj.__dict__, indent=2)

    print(json_string)
from datetime import date, datetime

class Person:
    def __init__(self, name, age, birth=None):
        self.name = name
        self.age = age
        self.birth = birth


class JsonEncoder(json.JSONEncoder):
    def default(self, o):
        if hasattr(o, "__dict__"):
            return o.__dict__
        if isinstance(o, date):
            return o.strftime('%Y-%m-%d')

        if isinstance(o, datetime):
            return o.strftime('%Y-%m-%d %H:%M:%S')

        return str(o)


if __name__ == '__main__':
    p1 = Person(name="张三", age=20, birth=date(2000, 10, 10))
    print(p1.__dict__)
    p2 = Person(name="李四", age=21)
    p3 = Person(name="王五", age=22)
    p4 = Person(name="赵六", age=20)
    person_list = [p1, p2, p3, p4]
    # 使用 JSON 序列化 将数据 转成 JSON字符串
    json_string = json.dumps(person_list, ensure_ascii=False, cls=JsonEncoder, indent=2)

    print(json_string)
import json
from datetime import date, datetime

# 创建一个 json格式的字符串
string = '[{"name": "张三", "age": 20, "birth": "1990-10-10"}, {"name": "李四", "age": 20, "birth": "1990-10-10"}]'


class Person:
    def __init__(self, name, age, birth=None):
        self.name = name
        self.age = age
        self.birth = birth

    def __repr__(self):
        return str(self.__dict__)


def test(kwargs):
    if "birth" in kwargs:
        kwargs["birth"] = datetime.strptime(kwargs["birth"], '%Y-%m-%d').date()

    return Person(**kwargs)


# 将 该字符串转成列表
ls = json.loads(string, object_hook=test)

print(ls)

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

您可能感兴趣的文章:
阅读全文