사전을 JSON으로 변환 데이터에 액세스 할

r = {'is_claimed': 'True', 'rating': 3.5}
r = json.dumps(r)
file.write(str(r['rating']))

JSON에서 데이터에 액세스 할 수 없습니다. 내가 뭘 잘못하고 있죠?

TypeError: string indices must be integers, not str


답변

json.dumps()사전을 str객체가 아닌 객체 로 변환 json(dict)합니다! 당신은로드가 귀하의 strdict사용하여 그것을 사용하는 json.loads()방법을

json.dumps()저장 방법 및 json.loads()검색 방법으로 참조하십시오 .

다음은 더 이해하는 데 도움이되는 코드 샘플입니다.

import json

r = {'is_claimed': 'True', 'rating': 3.5}
r = json.dumps(r)
loaded_r = json.loads(r)
loaded_r['rating'] #Output 3.5
type(r) #Output str
type(loaded_r) #Output dict

답변

json.dumps()파이썬 dict의 JSON 문자열 표현을 반환합니다. 문서를 참조하십시오

r['rating']r은 더 이상 dict이 아닌 문자열이므로 수행 할 수 없습니다.

아마도 당신은 같은 것을 의미했습니다

r = {'is_claimed': 'True', 'rating': 3.5}
json = json.dumps(r) # note i gave it a different name
file.write(str(r['rating']))

답변

를 사용하여 문자열로 변환 할 필요가 없습니다. json.dumps()

r = {'is_claimed': 'True', 'rating': 3.5}
file.write(r['is_claimed'])
file.write(str(r['rating']))

dict 객체에서 직접 값을 가져올 수 있습니다.


답변

r을 사전으로 정의하면 트릭을 수행해야합니다.

>>> r: dict = {'is_claimed': 'True', 'rating': 3.5}
>>> print(r['rating'])
3.5
>>> type(r)
<class 'dict'>