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
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)
วัตถุ! ดังนั้นคุณต้องโหลดของคุณstr
ลงdict
เพื่อใช้งานโดยใช้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()
ส่งคืนการแทนค่าสตริง JSON ของ pict dython ดูเอกสาร
คุณทำไม่ได้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'>
loaded_r
พิจารณาว่าคุณมีมันอยู่แล้วr
?