Python 了解jsonify()函数。也许是';是用来显示联系人的吗?

Python 了解jsonify()函数。也许是';是用来显示联系人的吗?,python,json,function,class,oop,Python,Json,Function,Class,Oop,我必须用python构建一个使用json文件的联系人通讯簿。因此,我必须定义一个类Contact,它的属性包括名称、姓氏和邮件。在解决方案中,有一个我从未想到的函数:jsonify(self)。我不明白它的作用和我为什么需要它。有人能帮我弄清楚吗 def jsonify(self): contact = {'name':self.name,'surname':self.surname,'mail':self.mail} return contact 使用json库,您可以非常轻

我必须用python构建一个使用json文件的联系人通讯簿。因此,我必须定义一个类Contact,它的属性包括名称、姓氏和邮件。在解决方案中,有一个我从未想到的函数:jsonify(self)。我不明白它的作用和我为什么需要它。有人能帮我弄清楚吗

def jsonify(self):
    contact = {'name':self.name,'surname':self.surname,'mail':self.mail}
    return contact

使用
json
库,您可以非常轻松地将对象转换为json,但它需要知道如何进行转换。库不知道如何解释自定义类:

>>> import json
>>> contact = Contact("Hello", "World", "hello@world.com")
>>> contact_json = json.dumps(contact)
TypeError: Object of type 'Contact' is not JSON serializable
json.dump(obj)
将其输入转换为json并以字符串形式返回。您还可以执行
json.dump(obj,file\u handle)
将其保存到文件中)

字典是Python中的已知类型,因此
json
库知道如何将其转换为
json
格式:

>>> import json
>>> contact = Contact("Hello", "World", "hello@world.com")
>>> contact_json = json.dumps(contact.jsonify())

{
  "name": "Hello",
  "surname": "World",
  "mail": "hello@world.com"
}
使用
jsonify
方法,可以将类中的字段转换为
json
库可以理解并知道如何翻译的内容

这是一种将对象序列化为JSON的快速而简单的方法,但不一定是最好的方法——理想情况下,您应该告诉JSON库如何解释您的类(请参阅此相关问题:)


编辑:查看评论讨论-我假设您已经了解Python数据结构和类。如果不是这样的话,首先就值得一读。

它所做的一件事就是撒谎。它不“jsonifies”,它“dicifies”在一个更严肃的注释上,它从(一些?)实例的属性中构建一个字典并返回它。您是否尝试调用它并打印它返回的内容?我不明白。这只是教授给我们的答案,没有解释,所以我不明白你的意思。你能说得更准确一点吗?你的回答真的很有帮助,对我这样的初学者来说也很清楚。非常感谢。所以,当我需要处理“包含”类的json文件时,我应该使用这种函数吗?没问题。是的,如果您有一个来自自定义类的对象,并且希望将其存储到JSON文件中,那么您需要这样的东西,或者理想情况下,需要类似于我上面链接的
JSONEncoder
示例的东西。后者的优点是,它比手工编写词典灵活得多,但我想你的教授给你举了这个例子,因为它更容易理解。