当 Python 字典和JSON字符串的键或值为自定义对象时,需要进行特殊处理才能进行转换。以下是两个示例:

  1.自定义对象转 JSON 字符串

  假设有一个自定义对象Person,其中包含name、age和city三个属性:

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

  我们可以将这个对象转换为一个Python字典,然后再将其转换为JSON字符串:

import json

person = Person("Alice", 30, "New York")
person_dict = {"name": person.name, "age": person.age, "city": person.city}
person_json = json.dumps(person_dict)
print(person_json)

  输出:

{"name": "Alice", "age": 30, "city": "New York"}

  2.JSON 字符串转自定义对象

  假设有以下 JSON 字符串:

{
    "name": "Alice",
    "age": 30,
    "city": "New York"
}

  我们可以使用json模块中的loads()函数将其转换为Python字典,然后再将其转换为自定义对象:

import json

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

person_json = '{"name": "Alice", "age": 30, "city": "New York"}'
person_dict = json.loads(person_json)
person = Person(person_dict["name"], person_dict["age"], person_dict["city"])
print(person.name, person.age, person.city)

  输出:

Alice 30 New York

  需要注意的是,当Python对象嵌套了其他自定义对象或容器对象时,转换起来会更加复杂。这时需要使用递归或其他的转换方法。