El cuarto nivel de la pregunta de la entrevista:
Parte 1 - Sitio de prueba:
- Uso de la función de volcados.
Parte 2 - Preguntas de la entrevista:
1. Pregunta de la entrevista 1: Convierta un objeto de Python en la cadena JSON correspondiente.
2. Pregunta 2 de la entrevista: convertir una lista de objetos en una matriz JSON.
Parte 3 - Análisis:
Una de las preguntas de la entrevista convierte un objeto de Python en la cadena JSON correspondiente:
- Usando la función dumps(), el punto clave es usar la función de conversión~
# coding=utf-8
# _author__ = 孤寒者
import json
class Product:
def __init__(self, name, age, height):
self.name = name
self.age = age
self.height = height
product = Product('孤寒者', 18, 130)
def product2Dict(obj):
return {
'name': obj.name,
'age': obj.age,
'height': obj.height
}
# dumps()方法的default参数指定转换函数。
jsonStr = json.dumps(product, default=product2Dict, ensure_ascii=False)
print(jsonStr)
print(type(jsonStr))
La pregunta 2 de la entrevista convierte una lista de objetos en una matriz JSON:
- Para implementar esta función, necesitamos una lista de objetos, por lo que convertimos el documento JSON (el archivo test.json a continuación) en una lista de objetos (ya sabemos cómo operarlo en la pregunta anterior ~), y luego convertirlo a matriz JSON.
[
{
"name": "孤寒者",
"age": 18,
"height": 130
},
{
"name": "小张",
"age": 18,
"height": 80
}
]
# coding=utf-8
# _author__ = 孤寒者
import json
class Product:
def __init__(self, d):
self.__dict__ = d
with open('test.json', 'r', encoding='utf-8') as f:
jsonStr = f.read()
products = json.loads(jsonStr, object_hook=Product)
print(products)
La captura de pantalla anterior muestra que, efectivamente, hemos convertido el documento JSON en una lista de objetos.
Empecemos a resolver el problema:
# coding=utf-8
# _author__ = 孤寒者
import json
class Product:
def __init__(self, d):
self.__dict__ = d
with open('test.json', 'r', encoding='utf-8') as f:
jsonStr = f.read()
products = json.loads(jsonStr, object_hook=Product)
print(products)
for product in products:
print(product.name)
print("*"*25)
# 解题部分:
def product2Dict(obj):
return {
'name': obj.name,
'age': obj.age,
'height': obj.height
}
jsonStr = json.dumps(products, default=product2Dict, ensure_ascii=False)
print(jsonStr)
print(type(jsonStr))
Parte 4 - Conclusión:
- La función de volcados del módulo json se usa para convertir objetos en cadenas JSON.
- Especifique una función de conversión a través del parámetro predeterminado, en el que se puede extraer el valor del atributo del objeto y se puede generar un objeto JSON.Finalmente, los volcados se encargan de convertir el objeto JSON devuelto por la función de conversión en una cadena JSON.