如何将neomodel对象转换为json?(JSON不可序列化)

2024-09-29 17:15:10 发布

您现在位置:Python中文网/ 问答频道 /正文

我使用Falcon框架和neomodel与neo4j数据库进行通信。在

我在数据库中有一些节点,我试图通过API(getmethon)作为JSON对象返回关于它们的信息。在

为了检索信息,我使用代码people = Person.nodes 我反复告诉大家:

for p in people:
    print(p)

我得到:

^{pr2}$

当我对单个实体执行json.dumps()操作时,我得到一个错误:

TypeError: <Person: {'name': 'John', 'id': 0, 'uid': '584d9b0517584b8194f222052bf177ff'}> is not JSON serializable

如何将neomodel对象转换为json对象?在


Tags: 对象代码框架api信息数据库json节点
3条回答

似乎您的people中的每个p都是一个对象。 尝试类似json.dumps(p.__dict__)的方法。如果它是一个通用的neomodel节点对象,那么这应该可以工作。在

这是个老问题,但这就是我如何处理这个问题。。在

在类上创建一个函数,这样我就可以控制要返回的数据。使用__properies__而不是.to_json函数,您将获得所有属性。在

class Player(StructuredNode):
  mid = IntegerProperty(unique_index=True)
  f_name = StringProperty()
  l_name = StringProperty()
  email = StringProperty()
  team = RelationshipFrom('Team', 'PLAYER', model=PlayerRel)

  def to_json(self):
    return {
        "id": self.mid,
        "firstName": self.f_name,
        "lastName": self.l_name,
        "email": self.email,
        "fullName": self.f_name + ' ' + self.l_name
    }

然后我有一个节点,它连接了几个玩家,我只需要返回一个玩家数组,这些玩家可以被序列化:

^{pr2}$

使用json.dumps(p.__properties__)就可以了。使用p.__dict__尝试对neomodel属性类进行编码,这将引发错误。在

相关问题 更多 >

    热门问题