前提・実現したいこと
以下の様なリストがあります。
json1
1[ 2 [ 3 { 4 "111": "1", 5 "123": "-", 6 "234": "URL#", 7 "455": "〇", 8 "666": "150", 9 "777": "1000" 10 } 11 ] 12]
json2
1[ 2 [ 3 { 4 "111": "1", 5 "123": "-", 6 "234": "URL#", 7 "455": "〇", 8 "666": "200", 9 "777": "1200" 10 }, 11 { 12 "111": "あああ", 13 "123": "-", 14 "234": "URL#", 15 "455": "〇", 16 "666": "1000", 17 "777": "1500" 18 } 19 ] 20] 21
本当は下記の様にしたいのですが、うまく出力できません。
どうすれば、以下の様に意図する形式でデータを出力できるでしょうか。
json1
1[ 2 { 3 "111": "1", 4 "123": "-", 5 "234": "URL#", 6 "455": "〇", 7 "666": "150", 8 "777": "1000" 9 } 10]
json2
1[ 2 { 3 "111": "1", 4 "123": "-", 5 "234": "URL#", 6 "455": "〇", 7 "666": "200", 8 "777": "1200" 9 }, 10 { 11 "111": "あああ", 12 "123": "-", 13 "234": "URL#", 14 "455": "〇", 15 "666": "1000", 16 "777": "1500" 17 } 18]
該当のソースコード
Lambdaのpython3.7で組んでいます。
テーブルから検索キー群を取ってきて、取得した検索キー群で別のテーブルを検索します。検索結果はJSONでdictとして戻されてくるので、そのdictをリストに入れます。メインでもforをかけているのでリストにリストを入れ子するようなイメージになってしまっています。
python
1def gf(id1,id2,key1,key2,tn,age): 2 t3 = 'TABLE_NAME3' 3 result=[] 4 ic = get_JSON_val(t3) 5 if(len(ic) is not 0): 6 for rs in ic: 7 pc=rs['111'] 8 k3=pc+age 9 fee=get_JSON_val(k3,0,key1,0,t3) 10 if(len(fee) is not 0): 11 rs['666']=fee[0]['fee1'] 12 rs['777']=fee[0]['fee2'] 13 result.append(rs) 14 return result 15 16 17def lambda_handler(event, context): 18 t1 = os.getenv('TABLE_NAME1') 19 t2 = os.getenv('TABLE_NAME2') 20 k1 = os.getenv('KEY_NAME1') 21 k21 = os.getenv('KEY_NAME21') 22 k22 = os.getenv('KEY_NAME22') 23 c = '1010' 24 s1='' 25 s2 = '1' 26 s3 = '' 27 result = [] 28 i1 = get_code(ct,k1,t1) 29 for ik,iv in i1.items(): 30 m = re.match(k1,ik) 31 if(len(s1) is not 0): 32 skeys = search_keys() 33 for key in skeys: 34 if(not key == 0): 35 sk=key 36 s = gf(iv,sk,k21,k22,t2,s2) 37 if len(s) is not 0: 38 result.append(s) 39 40 return result
補足情報(FW/ツールのバージョンなど)
AWS Lambd Python
DynamoDB
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/01/30 00:21
2019/01/30 02:37