如何将NeoModel对象转换为JSON?(不是JSON可序列化的)



我使用Falcon Framework和NeoModel来与Neo4J数据库进行通信。

我在DB中有一些节点,我尝试通过API(GET METHON)作为JSON对象返回有关它们的信息。

为了检索信息,我使用代码people = Person.nodes我迭代人:

for p in people:
    print(p)

我得到:

{'name': 'John', 'id': 0, 'uid': '584d9b0517584b8194f222052bf177ff'}
{'name': 'Paul', 'id': 1, 'uid': 'f5763c01704e449885f846e87e1fcb6d'}

当我在单个实体上执行json.dumps()时,我会发现一个错误:

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

如何将neomodel对象转换为JSON对象?

使用 json.dumps(p.__properties__)可以做到这一点。使用p.__dict__尝试编码NeoModel属性类,这将丢弃错误。

似乎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
    }

然后,我有一个与有几个玩家连接的节点,我只是这样做以返回可以序列化的一系列玩家:

...
team = Team.nodes.get(team_id=id)
return ([player.to_json() for player in team.players])

相关内容

  • 没有找到相关文章

最新更新