美文网首页Python
Python基础(31) - 将JSON文档映射成Python对

Python基础(31) - 将JSON文档映射成Python对

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

将JSON文档映射成Python对象

读取JSON文档

  • 导入json模块
  • 读取文件信息 open('地址','r')
  • 返回json字符串,f.read()
import json

f = open('C:\\PyTest\\Selenium_OpenSchools\\test_selenium\\03-数据存储\\files\\product.json','r')
jsonStr = f.read()
print('josnStr:',jsonStr)
print('-'*20)
hexianling.png

返回这个时候的对象类型,发现是字典对象类型,并非是python对象

  • 使用json.load 返回对象类型
product = json.loads(jsonStr)
print(type(product))
hexianling.png

如果使用字典,取值方法

print(product['name'])
print(product['price'])
print(product['count'])
hexianling.png

自定义一个类,需要跟json名字相同

  • 创建一个构造类Product
  • 创建一个参数,将字典传入使用
  • 将值传给内部的字典
class Product:
    def __init__(self,d):
        self.__dict__ = d #将属性传给构建的字典

将json.loads方法中引用object_hook

  • 将创建的字典jsonStr作为第一个参数传入到class
  • object_hook 将读取的product作为钩子引入
product = json.loads(jsonStr,object_hook=Product) # 创建一个钩子,将Product对象引入
hexianling.png

创建成python对象后,读取值

print('-'*20)
print(product.name)
print(product.price)
print(product.count)
hexianling.png

完整的示例代码如下:

import json

class Product:
    def __init__(self,d):
        self.__dict__ = d #将属性传给构建的字典

f = open('C:\\PyTest\\Selenium_OpenSchools\\test_selenium\\03-数据存储\\files\\product.json','r')
jsonStr = f.read()
print('josnStr:',jsonStr)
print('-'*20)

product = json.loads(jsonStr,object_hook=Product)
print(type(product))
print('-'*20)
print(product.name)
print(product.price)
print(product.count)
print('-'*20)
hexianling.png

第二种方式:使用创建的函数进行转换

import json


class Product:
    def __init__(self,d):
        self.__dict__ = d #将属性传给构建的字典

f = open('C:\\PyTest\\Selenium_OpenSchools\\test_selenium\\03-数据存储\\files\\product.json','r')
jsonStr = f.read()
print('josnStr:',jsonStr)
print('-'*20)

def json2product(d):
    return Product(d)

prodNew = json.loads(jsonStr,object_hook=json2product)
print(prodNew.name)
hexianling.png

总结

1.JSON模块的loads函数可以装载JSON文档,并将其转换成JSON对象。

  1. 通过object_hook 参数指定钩子对象,然后在类的构造方法中将传入的JSON对象赋给内部变量'_dict_'

相关文章

网友评论

    本文标题:Python基础(31) - 将JSON文档映射成Python对

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