Django rest frameworkを使用してAPIを作成してみております。
views.pyのviewsetクラスで、json形式のファイルの中身を返したいと考えています。
python3
1class ExViewSet(viewsets.ModelViewSet): 2 def list(self, request, *args, **kwargs): 3 data = Ex.objects.all()[0] 4 f = open(data, 'r') 5 json_data = json.load(f) 6 return Response(json_data)
以上のようにjsonファイルを読み込み、中身をResponseで返すことができているのですが、curlで呼び出すと、一行で表示されてしまいます。
そこで以下のように修正してみました。
Python3
1class ExViewSet(viewsets.ModelViewSet): 2 def list(self, request, *args, **kwargs): 3 file = Ex.objects.all()[0] 4 f = open(data, 'r') 5 json_data = json.load(f) 6 data = json.dumps(json_data, indent=4) 7 return Response(data)
以上のように変えた後、再度curlで呼び出してみると、改行マーク(\n)と四つ分のスペースを入れて一行のままで表示されてしまいました。
print(data)
ではきれいに整形されて表示されるのですが、Responseでは整形されたものが改行記号などをともなって一行で表示されてしまいます。
flask で自作クラスをJSON変換すると、バックスラッシュが入ってしまうという質問で、json.dumpsに渡す際にjson形式のstrになってしまっているのではないか、という回答がありましたのでtype()でjson_dataの型を確認したところ、dictとなっていました。
Responseでは整形された形でjsonファイルの中身を返すことはできないのでしょうか?
ご教示いただけますと幸いです。よろしくお願いいたします。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。