我使用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])