質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Flask

FlaskはPython用のマイクロフレームワークであり、Werkzeug・Jinja 2・good intentionsをベースにしています。

Swagger

Swaggerは、REST APIを定義するための標準仕様に基づいて構築された一連のオープンソースツール。REST APIの設計や構築、文書化、使用に便利なツールを提供。Swagger Specを書くことでドキュメント生成まで自動的に行い、さらにドキュメントから実際のリクエストを投げられます。

JSON

JSON(JavaScript Object Notation)は軽量なデータ記述言語の1つである。構文はJavaScriptをベースとしていますが、JavaScriptに限定されたものではなく、様々なソフトウェアやプログラミング言語間におけるデータの受け渡しが行えるように設計されています。

エスケープ処理

エスケープ処理とは、一連の文字や一文字に対して、一定の規則に従って別の意味を適用する処理過程です。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

Q&A

解決済

1回答

1340閲覧

【Python / SwaggerUI / Flask / JSON】 JSONの出力結果で 「”」をエスケープせずに出力する方法はありますか

pekopekocot

総合スコア26

Flask

FlaskはPython用のマイクロフレームワークであり、Werkzeug・Jinja 2・good intentionsをベースにしています。

Swagger

Swaggerは、REST APIを定義するための標準仕様に基づいて構築された一連のオープンソースツール。REST APIの設計や構築、文書化、使用に便利なツールを提供。Swagger Specを書くことでドキュメント生成まで自動的に行い、さらにドキュメントから実際のリクエストを投げられます。

JSON

JSON(JavaScript Object Notation)は軽量なデータ記述言語の1つである。構文はJavaScriptをベースとしていますが、JavaScriptに限定されたものではなく、様々なソフトウェアやプログラミング言語間におけるデータの受け渡しが行えるように設計されています。

エスケープ処理

エスケープ処理とは、一連の文字や一文字に対して、一定の規則に従って別の意味を適用する処理過程です。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

0グッド

0クリップ

投稿2020/05/25 08:11

編集2020/05/25 08:17

いつもお世話になっております。
早速本題に入らせていただきます。

現在SwaggerUIとFlaskを使用してAPIを実装しているのですが、JSON形式で返却すると
レスポンスに「¥」が混ざってしまいます。

以下現在のコードです。

Flask

1@api.route('/test/<id>') 2class test(Resource): 3 def get(self, id): 4 return json.dumps({'result': 'Hello world'})

実行結果
イメージ説明


想定していた出力結果

{'result': 'Hello world'}

python のコンソールで出力してみたところ、下記のように表示されたので、
Swagger か Flask に原因があるのかなと思っています。

{"result": "Hello world"}

お時間ある方で、SwaggerUIのJSONから¥を除去する方法ご存じの方いらっしゃいましたらご助力頂けますと幸いです。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

maisumakun

2020/05/25 08:13

「実行結果」は何で確認していますか?
guest

回答1

0

ベストアンサー

SwaggerUIとやらは知りませんが、実行結果を見る限りJSON文字列化した物を更にJSON文字列化しているように見えます。
ともすれば、json.dumpsでJSON文字列化しているのは要らないのではないですか。

ググってみたけどSwaggerUIのリファレンスマニュアルらしき物が見当たらなかったのですが、例えばここのページのサンプルを見てみると、

python

1@name_space.route("/") 2class MainClass(Resource): 3 def get(self): 4 return { 5 "status": "Got new data" 6 } 7 def post(self): 8 return { 9 "status": "Posted new data" 10 }

というように、JSON文字列ではなくPythonオブジェクトそのものを返しているようですが。


あぁ、flask_restplusモジュールの仕様かな。どっちにしろ自分は知らないのですが。
そちらのQuickStartドキュメントを見ても、同様のサンプルになってますね。

python

1from flask import Flask 2from flask_restplus import Resource, Api 3 4app = Flask(__name__) 5api = Api(app) 6 7@api.route('/hello') 8class HelloWorld(Resource): 9 def get(self): 10 return {'hello': 'world'} 11 12if __name__ == '__main__': 13 app.run(debug=True)

投稿2020/05/25 15:51

編集2020/05/25 15:57
katsuko

総合スコア3471

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問