Práctica diaria de Python: nivel de almacenamiento de datos 4: cómo convertir un objeto de Python en una cadena JSON correspondiente

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))

inserte la descripción de la imagen aquí

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)

inserte la descripción de la imagen aquí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))

inserte la descripción de la imagen aquí


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.

Supongo que te gusta

Origin blog.csdn.net/qq_44907926/article/details/123019162
Recomendado
Clasificación