AWSおよびPython初心者です。簡単なことなのかもしれませんがはまってしまって
困っています。ぜひお力をお貸しください。
サーバレスの勉強をしようとLambda+APIGateWayでサンプルを
作ろうとしています。Dynam-DBを使用せずLambdaでjsonを返すだけの
単純なものです。2つつまづいている点があります。対処方法をご教示
いただけますでしょうか。お願いいたします。
1.APIGateWay経由で返してきているjsonの日本語が取れない。
APIGateWayからブラウザで取得しようとする値が下図の様になっていて
日本語が正しく取得できません。
どの様にすれば数値列でない状態で日本語を取得できるでしょうか。
APIGateWayでテストした際には以下の様に日本語ベースで取れているように
見受けられます。APIGateWayのメソッドレスポンス等で文字コードを足したり
Python側でも色々してみましたが上図のままでした。
APIテスト結果
Lambdaコードは以下の通りです。
```python
coding: utf-8
import json
from urllib.parse import parse_qs
def lambda_handler(event, context):
try:
params = parse_qs(event['body'].encode('utf-8'))
print (json.dumps(event,indent=2)) user_object = """{ { "id" : 12345, "name":"山下 清", "age" : 30, "url": "http://www.yahoo.co.jp/" }, { "id" : 22222, "name":"上田 尊司", "age" : 45, "url": "http://www.google.co.jp/" }, { "id" : 55555, "name":"清宮 仁郎", "age" : 28, "url": "http://www.yahoo.co.jp/" } }""" # return json return { 'statusCode' :200, 'headers' : {'content-type' : 'application/json'}, 'body': json.dumps(user_object,ensure_ascii=False) } except Exception as e: print(e) raise e
**2.json形式で取得した特定の値のキーが表示できない** 1のLambdaおよびAPIGateWayで返されてきたjsonをパースして idの値を取ろうとしているのですがエラーとなってしまい。 値が取れません。data[0].idの箇所です。どうやらNullの様です。 data自体はobjectとして認識されているようではありました。 ```JavaScript <script> function getJSON(){ var req = new XMLHttpRequest(); req.open('GET', "APIGAteWayのURI"); req.send(null); req.onreadystatechange = function() { if(req.readyState == 4 && req.status == 200){ var data = JSON.parse(req.responseText); alert(data[0].id); } } };
下記の記事を参考にしてみたのですが意図したとおりに動いてくれません。
https://qiita.com/1mada/items/9a48f7053a6016b5fd5a
色々と試行錯誤してみましたが調べ方もわからない状態です。
周りにAWSに精通している方もいらっしゃらないので申し訳ないですが
ご教示よろしくお願いいたします。

回答3件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2018/02/27 02:30 編集