私はPythonと私のアプリケーションでかなり新しく、Neomodelを使ってNeo4jデータベースからグラフデータを読み込んで取得しています。私は、以下の機能を持っている私のルートの1つでPython NeoModel JSONオブジェクトとしてクエリ結果を返す方法
:
@api_mod.route('/users')
def get_users():
users = User.nodes #Returns a NodeSet
list_of_users = list(users) #Converts the NodeSet object to a list
return json.dumps(dict(users = [user for user in list_of_users]))
が私のUserクラスは、次のように定義されます。
class User(StructuredNode):
user_id = StringProperty(unique_index=True, required=True)
logged_in = RelationshipTo('Environment', 'LOGGED_IN', model=LoginAction)
launched = RelationshipTo('Application', 'LAUNCHED', model=LaunchedAction)
entered = RelationshipTo('Application', 'ENTERED', model=EnteredAction)
accessed = RelationshipTo('Application', 'ACCESSED', model=AccessedAction)
exited = RelationshipTo('Application', 'EXITED', model=ExitedAction)
logged_out = RelationshipTo('Environment', 'LOGGED_OUT', model=LogoutAction)
timed_out = RelationshipTo('Environment', 'TIME_OUT', model=TimeoutAction)
def toJSON(self):
return dict(user_id = self.user_id)
私の期待は私の/ユーザのルートはJSONオブジェクトを返すということですデータベース内のすべてのユーザーとNodeSetオブジェクトをJSONオブジェクトにシリアライズすることはできないので、リストに変換しようとしました。しかし、今、私は次のエラーを取得する実行すると: 「例外TypeError:タイプのオブジェクト 『ユーザー』は、シリアライズJSONではありません」
、ここで全体のスタックトレースです: トレースバック(最後の最新の呼び出し): ファイル」 "コール リターンself.wsgi_app(環境、start_responseを) ファイルで、ライン1997、" /Users/mdebarros/.virtualenvs/useractivitylogs/lib/python3.6/site-packages/flask/app.py /ユーザ/ "mudbarros/.virtualenvs/useractivitylogs/lib/python3.6/site-packages /フラスコ/ app.py"、1985行目、wsgi_app レスポンス= self.handle_exception(e) ファイル "/Users/mdebarros/.virtualenvs/useractivitylogs /lib/python3.6/site-packages/flask/app.py "、行1540、handle_exception reraise(exc_type、exc_value、tb) ファイル「/Users/mdebarros/.virtualenvs/useractivitylogs/lib/python3.6/site-packages/flask/_compat.py」、行33、reraiseで raise値 ファイル "/Users/mdebarros/.virtualenvs/useractivitylogs/lib/python3.6/site-packages/flask/app.py"、1982行目、wsgi_app レスポンス= self.full_dispatch_request() ファイル "/ Users/mdebarros/.virtualenvs/useractivitylogs/lib/python3.6/site-packages /フラスコ/ app.py "、1614行、full_dispatch_request rv = self.handle_user_exception(e) ファイル" /Users/mdebarros/.virtualenvs/useractivitylogs /lib/python3.6/site-packages/flask/app.py "、行1517、handle_user_exception リレイズ(exc_type、exc_value、tb) ファイル "/Users/mdebarros/.virtualenvs/useractivitylogs/lib/python3.6/site-packages/flask/_compat.py"、33行目、reraise raise値 ファイル "/Users/mdebarros/.virtualenvs/useractivitylogs /lib/python3.6/site-packages/flask/app.py "、line 1612、full_dispatch_request rv = self.dispatch_request() ファイル" /Users/mdebarros/.virtualenvs/useractivitylogs/lib/python3.6/ site-packages/flask/app.py "、1598行目、dispatch_request return self.view_functionsrule.endpoint ファイル「/Users/mdebarros/PycharmProjects/useractivitylogs/app/api/routes.py」、行16、get_users return json.dumps(dict(users = [list_of_users]のユーザーのユーザー)) ファイル "/usr/local/Cellar/python3/3.6.2/Frameworks/Python.framework/Versions/3.6/lib/python3.6/ json/init .py "、行231、ダンプ内 return _default_encoder.encode(obj) ファイル" /usr/local/Cellar/python3/3.6.2/Frameworks/Python.framework/Versions/3.6/lib/python3。 6/json/encoder.py "、199行目、エンコード チャンク= self.iterencode(o、_one_shot = True) ファイル" /usr/local/Cellar/python3/3.6.2/Frameworks/Python.framework/Versions /3.6/lib/python3.6/json/encoder.py "、行257、iterencode return _iterencode(o、0) ファイル" /usr/local/Cellar/python3/3.6.2/Frameworks/Python.framework /Versions/3.6/lib/python3.6/json/encoder.py "、行180、デフォルトで o。クラス。 名) はTypeError:タイプのオブジェクトのユーザーが「私はこれを処理し、適切なJSONオブジェクトを返すことができる方法上の任意のヘルプや提案、シリアライズ
JSONではないでしょうか?
ありがとうございました。
--md
はあなたに@Codingをありがとう、それは完全に働きました。誰もがこれを必要とする場合に備えて、Node自体についての情報を探しているので、シリアライゼーションメソッドには唯一の変更がありました。私はuser_idプロパティを返しました。 – Cracoras