首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用PYTHON以字典类型而不是字符串类型获得JSON.loads()输出

如何使用PYTHON以字典类型而不是字符串类型获得JSON.loads()输出
EN

Stack Overflow用户
提问于 2017-06-15 07:11:03
回答 1查看 7.2K关注 0票数 4

当我使用JSON.dump()时,我的格式低于JSON格式

代码语言:javascript
复制
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格式

代码语言:javascript
复制
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字符串转换为字典类型。

代码语言:javascript
复制
Loads Data Type : type of loads <class 'str'>

当我试图直接解析字符串类型JSON时,我得到了以下错误

代码语言:javascript
复制
ERROR : Traceback (most recent call last):
File "Db.py", line 84, in <module>
print(par['GunningFogScore'])
TypeError: string indices must be integers
EN

回答 1

Stack Overflow用户

发布于 2017-10-31 13:47:42

我可以简单地再现你的问题:

代码语言:javascript
复制
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)))

结果:

代码语言:javascript
复制
"{\"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) )

所以当你重新装上

代码语言:javascript
复制
par = json.loads(s)

您得到一个字符串,而不是字典,它解释了使用[]时的错误消息(因为您试图将一个键传递给一个字符串)。

解决办法:

使用json.loads(json.loads(s))恢复数据。

作为一个更好的解决方法,只需在序列化过程中使用dumps一次。

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44560945

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档