2017-01-20 3 views
0
def lambda_handler(event, context): 
    "idsA=event['items'][0]['ids']" 

Когда я хочу позвонить с Python элементы объекта JSON, который содержит массивы иды .. в AWS лямбда, из API, возвращает эту ошибку:строковые индексы должны быть целыми числами AWS лямбда API

"string indices must be integers"` 

Я думаю, что проблема может быть в CONFIGURE событие тест:

{ 
    "ids": "ids", 
    "contents": "contents", 
    "ResultID": "ResultID", 
    "QueryID": "QueryID", 
    "nR": "nR", 
    "items": "ids"  


} 

или API getaaway в JSON шаблон отображения тела:

{ 
    "items": [ 
    #foreach($elem in $input.params('items').split(',')) 
     { 
      "ids": "$elem.ids", 
      "contents": "$elem.contents" 
     }#if($foreach.hasNext),#end 
    #end 
    ], 
    "QueryID": "$input.params('QueryID')", 
    "nR": "$input.params('nR')" 
} 
+0

Предполагая, что первый словарь в вашем сообщении называется 'event', тогда' event ['items'] [0] 'возвращает первую букву значения ключа' items', которая является строкой, которую вы пытаетесь разрезать используя другую строку. Если я неправильно понял, напишите, как выглядит «событие». –

+0

проверить мое обновление – user2165656

+0

Извините, что все еще не помог мне понять. Как я уже говорил, проблема заключается в том, что вы индексируете строку с другой строкой. Это должно означать, что 'event ['items'] [0]' является строкой, а не dict, как вы предполагаете. –

ответ

1

Это звучит, как в ваших деталях событий теста должен быть массивом JSON объектов:

{ 
    "ResultID": "ResultID", 
    "QueryID": "QueryID", 
    "nR": "nR", 
    "items": [ 
     { 
      "ids": [1, 2, 3], 
       "contents": ["content1", "content2"] 
     } 
    ] 
} 

... но я думаю, что может быть проблема отображения шаблона здесь. Как выглядит необработанный запрос к API-шлюзу?

+0

Спасибо! кажется, что он работает, но выходной формат массива 1d int странный: – user2165656

+0

["1", ",", "2", ",", "3"] – user2165656

+0

ids - это просто строка в этом JSON, re доступ к нему как к массиву. Вы хотите, чтобы это был массив в JSON? –

Смежные вопросы