美文网首页Python
Python基础(32) - 将类的实例转换成JSON字符串

Python基础(32) - 将类的实例转换成JSON字符串

作者: xianling_he | 来源:发表于2020-03-07 17:50 被阅读0次

    将类的实例转换成JSON字符串

    将一个对象类型转换成JSON字符串

    • 创建一个类
    • 并将类进行实例化,传入参数使用
    import json
    
    
    class Product:
        def __init__(self,name,price,count):
            self.name = name
            self.price = price
            self.count = count
    
    
    product = Product('iPhonex',5000,3)
    
    • 创建一个字典类转换函数,用来返回所有值
    def productToDict(obj):
        return{
            'name':obj.name,
            'price':obj.price,
            'count':obj.count
        }
    
    • 将类转成JSON并打印
    jsonStr = json.dumps(product,default=productToDict,ensure_ascii=False)
    print(jsonStr)
    
    hexianling.png

    完整代码如下:

    • ensure_ascii=False: 默认值是True, 如何是True会中文有乱码
    class Product:
        def __init__(self,name,price,count):
            self.name = name
            self.price = price
            self.count = count
    
    
    product = Product('iPhonex',5000,3)
    
    def productToDict(obj):
        return{
            'name':obj.name,
            'price':obj.price,
            'count':obj.count
        }
    
    jsonStr = json.dumps(product,default=productToDict,ensure_ascii=False)
    print(jsonStr)
    

    将转换函数返回的JSON串,重新转换成JSON类型字符串

    • 创建类,将函数转成字典
    class Product:
        def __init__(self,d):
            self.__dict__ = d #将属性传给构建的字典
    
    • 读取json文件中的内容
    f = open('C:\\PyTest\\Selenium_OpenSchools\\test_selenium\\03-数据存储\\files\\product.json','r')
    jsonStr1 = f.read()
    
    • 将JSON串中的内容转成字典类型值
    products1 = json.loads(jsonStr1,object_hook= Product)
    print(products1)
    
    • 使用dumps函数将内容重新输出,显示格式JSON
    jsonStrNew = json.dumps(products1,default=productToDict,ensure_ascii=False)
    print(jsonStrNew)
    

    完整代码如下:

    import json
    def productToDict(obj):
        return{
            'name':obj.name,
            'price':obj.price,
            'count':obj.count
        }
    
    class Product:
        def __init__(self,d):
            self.__dict__ = d #将属性传给构建的字典
    
    f = open('C:\\PyTest\\Selenium_OpenSchools\\test_selenium\\03-数据存储\\files\\product.json','r')
    jsonStr1 = f.read()
    
    hexianling.png

    总结

    json模块的dumps用于将对象转成jsom字符串,通过default参数指定一个转换函数,可以在该函数中提取对象的属性值,并生成JSON对象,最后dumps负责将转换函数返回的JSON对象转成JSON字符串

    加油 2020-3-7

    相关文章

      网友评论

        本文标题:Python基础(32) - 将类的实例转换成JSON字符串

        本文链接:https://www.haomeiwen.com/subject/fbacdhtx.html