当我使用JSON.dump()时,我的格式低于JSON格式
Dumps data"b'{\"AutomaticReadabilityIndex\":2.7999999999999994,\"AgeLevel\":[\" 11 to 12\"],\"Statement\":[\"Nice. Your grade is about six\"],\"SpacheScore\":1.877,\"GunningFogScore\":9.099999999999998,\"SmogIndex\":5.999999999999999}'"当我使用JSON.loads()时,我的字节数低于JSON格式
loads data b'{"AutomaticReadabilityIndex":2.7999999999999994,"AgeLevel":[" 11 to 12"],"Statement":["Nice. Your grade is about six"],"SpacheScore":1.877,"GunningFogScore":9.099999999999998,"SmogIndex":5.999999999999999}'我的问题是,当我使用loads格式时,输出必须是字典类型,但我不知道为什么要将字符串类型作为输出。如何将此JSON字符串转换为字典类型。
Loads Data Type : type of loads <class 'str'>当我试图直接解析字符串类型JSON时,我得到了以下错误
ERROR : Traceback (most recent call last):
File "Db.py", line 84, in <module>
print(par['GunningFogScore'])
TypeError: string indices must be integers发布于 2017-10-31 13:47:42
我可以简单地再现你的问题:
import json
s = {"AutomaticReadabilityIndex":2.7999999999999994,"AgeLevel":[" 11 to 12"],"Statement":["Nice. Your grade is about six"],"SpacheScore":1.877,"GunningFogScore":9.099999999999998,"SmogIndex":5.999999999999999}
print(json.dumps(json.dumps(s)))结果:
"{\"SmogIndex\": 5.999999999999999, \"AutomaticReadabilityIndex\": 2.7999999999999994, \"SpacheScore\": 1.877, \"GunningFogScore\": 9.099999999999998, \"AgeLevel\": [\" 11 to 12\"], \"Statement\": [\"Nice. Your grade is about six\"]}"因此,要么是:
"{12:1,14:2}")的字符串。(如果您不确定类型,请在执行转储之前检查type(s) )
所以当你重新装上
par = json.loads(s)您得到一个字符串,而不是字典,它解释了使用[]时的错误消息(因为您试图将一个键传递给一个字符串)。
解决办法:
使用json.loads(json.loads(s))恢复数据。
作为一个更好的解决方法,只需在序列化过程中使用dumps一次。
https://stackoverflow.com/questions/44560945
复制相似问题