[解決済み】 raise TypeError(repr(o) + " is not JSON serializable")
2022-02-11 15:42:43
質問
私はこのプロジェクトに基づいて、いくつかのコードをモデル化しようとしています。 https://auth0.com/blog/developing-restful-apis-with-python-and-flask/#bootstrapping-flask
これは私の初めてのpythonによるREST APIです。 以下はそのコードです。
from marshmallow import Schema, fields
class Product():
def __init__(self, ident, name, description, category):
self.ident = ident
self.name = name
self.description = description
self.category = category
def __repr__(self):
return '<Expense(name={self.description!r})>'.format(self=self)
class ProductSchema(Schema):
ident = fields.Str()
name = fields.Str()
category = fields.Str()
description = fields.Str()
index.py
from flask import Flask, jsonify, request
from server.model.product import Product, ProductSchema
app = Flask(__name__)
products=[Product('a','b','c','d')]
@app.route("/")
def hello_world():
return "Hello, World!"
@app.route("/products", methods=['POST'])
def add_product():
product = ProductSchema().load(request.get_json())
products.append(product.data)
return "", 204
@app.route("/products")
def get_products():
schema = ProductSchema(many=True)
return jsonify(products)
if __name__ == "__main__":
app.run()
しかし、/productsに対してhttp GETリクエストをしようとすると、記述のようなエラーが発生します。
どうすればいいですか?
2つの問題があります。
-
products
の型はリストであり、jsonifyはセキュリティ上、結果リストにならない。 -
Product()
オブジェクトはクラスであり、dictを返す必要があります。
でコードを変更してください。
import json
@app.route("/products")
def get_products():
schema = ProductSchema(many=True)
return json.dumps([p.__dict__ for p in prodacts])
または
from flask import Response
import json
@app.route("/products")
def get_products():
schema = ProductSchema(many=True)
return Response(json.dumps([p.__dict__ for p in prodacts]), mimetype='application/json')
関連
-
[解決済み] Pythonで "filter "オブジェクトの長さを求める方法
-
[解決済み] NumPy:linalg.eig()とlinalg.eigh()の違いについて
-
[解決済み] pygame: pygame.KEYDOWNが動作しない
-
[解決済み] Radd法によるクラス間加算
-
[解決済み] 正しいJSONコンテンツタイプは何ですか?
-
[解決済み] cURLでJSONデータをPOSTするにはどうすればよいですか?
-
[解決済み] RESTful WebServiceにファイルや関連データをJSONで投稿する。
-
[解決済み] TypeError: Python3でファイルへの書き込み時に'str'ではなくbytesのようなオブジェクトが要求される
-
[解決済み] URLクエリパラメータを含むHTTP POST -- 良いアイデアかどうか?
-
[解決済み】Pythonの "raise from "の使い方
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] Process finished with exit code 1」とはどういう意味ですか?
-
[解決済み] ValueError: pysparkを使用してsparkで複数のSparkContextsを同時に実行できません。
-
[解決済み] sklearn の KNearest Neighbors - ValueError: クエリデータの次元はトレーニングデータの次元と一致する必要があります。
-
[解決済み] 2次元リストを行と列で印刷する
-
[解決済み] 'python3' は内部または外部のコマンド、操作可能なプログラムまたはバッチファイルとして認識されません。
-
[解決済み] Pythonのエラーメッセージ io.UnsupportedOperation: not readable(読めません
-
[解決済み] tensorflowをインポートする際に、以下のエラーが発生します。numpy.core._multiarray_umath'という名前のモジュールがありません。
-
[解決済み] ImportError: 'sklearn.externals' から名前 'joblib' をインポートすることができません。
-
[解決済み] テキストファイルに辞書を書き込む?
-
[解決済み] discordのボットコマンドとイベントの両方を使うには?