[ERROR] TypeError: string indices must be integers
이 에러가 뭐냐고?
너도 알고 나도 알고 다알지
인덱스에 integer가 아닌 다른걸 넣은거지
a=[2,3]
# a[0.5] -> error
# a['0'] -> error
print(a[0])
근데 지금 이걸로는 이해가 안돼!
선결론
다중배열이 dict 안에 dict이 아닌, dict안에 str형태이다.
event 객체가 json 형태를 받아서 사용할때 dict 형태가 아닌 str형태로 만들어서 그렇다
다시말해
event 객체
event={
"body":{
"no":2017036174,
"name":"nsmchan"
}
}
# EVENT BODY
# {'no': 2017036174, 'name': 'nsmchan'}
# 이렇게 나와야하는데!!!
print(type(event["body"]))
# <class 'dict'>
# 이렇게 된다..!
print(type(event["body"]))
# <class 'str'>
dict 안에 dict 구조
dict 안에 str 구조가 된것이다
상황
api gateway를 트리거로 aws lambda를 사용하는데
콘솔의 함수에서 테스트를 할때는 이상이없는데
api gateway에서 테스트를하면 다음과 같은 에러가 뜨고
{"message": "Internal server error"}
errorMessage": "string indices must be integers"
postman에서 테스트를 하면 다음과 같이 뜬다
{
"message": "Internal server error"
}
[ERROR] TypeError: string indices must be integers
해결
json형태를 띈 str 타입을 dict로 변환!!! (str -> dict)
json.loads(변수)
return 해줄때는 json형태로! (dict -> str)
json.dumps(변수)
항상 로그를 확인하면서 코드를 짜자!