首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用json.loads解析json数组的正确方法是什么?

使用json.loads解析json数组的正确方法是什么?
EN

Stack Overflow用户
提问于 2021-04-08 22:08:28
回答 2查看 73关注 0票数 0

我试图弄清楚如何从JSON文件中解析一个完整的数组。我成功地用一个对象完成了这个任务,但是我不知道为什么它不适用于一个完整的数组。

代码语言:javascript
复制
[
{"SequenceNumber": 20, "Offset": "4294967296", "EnqueuedTimeUtc": "4/8/2021 7:22:56 AM", "SystemProperties": {"x-opt-enqueued-time": {"long": 1617866576085}}, "Properties": {"Postman-Token": {"string": "21be7531-8f6b-422c-b676-#####"}}, "Body": {"bytes": "{\"id\":1,\"receiver\":\"77777777\",\"message\":{\"test\":\" test signal\",\"PrsId\":3,\"DriverId\":2,\"GUID\":\"1s3q1d-s546dq1-8e22e\",\"LineId\":2,\"SvcId\":2,\"Lat\":-456.546547,\"Lon\":-68.546547,\"TimeStamp\":\"2021-03-18T08:29:36.758Z\",\"Recorder\":\"dq65ds4qdezzer\",\"Env\":\"PRD\"},\"operator\":20404,\"sender\":\"MSISDN\",\"binary\":1,\"sent\":\"2021-03-29T08:29:36.758Z\"}"}},
{"SequenceNumber": 20, "Offset": "4294967296", "EnqueuedTimeUtc": "4/8/2021 7:22:56 AM", "SystemProperties": {"x-opt-enqueued-time": {"long": 1617866576085}}, "Properties": {"Postman-Token": {"string": "21be7531-8f6b-422c-b676-#####"}}, "Body": {"bytes": "{\"id\":1,\"receiver\":\"77777777\",\"message\":{\"test\":\" test signal\",\"PrsId\":3,\"DriverId\":2,\"GUID\":\"1s3q1d-s546dq1-8e22e\",\"LineId\":2,\"SvcId\":2,\"Lat\":-65634.546547,\"Lon\":-68.546547,\"TimeStamp\":\"2021-03-18T08:29:36.758Z\",\"Recorder\":\"dq65ds4qdezzer\",\"Env\":\"PRD\"},\"operator\":20404,\"sender\":\"MSISDN\",\"binary\":1,\"sent\":\"2021-03-29T08:29:36.758Z\"}"}},
{"SequenceNumber": 20, "Offset": "4294967296", "EnqueuedTimeUtc": "4/8/2021 7:22:56 AM", "SystemProperties": {"x-opt-enqueued-time": {"long": 1617866576085}}, "Properties": {"Postman-Token": {"string": "21be7531-8f6b-422c-b676-#####"}}, "Body": {"bytes": "{\"id\":1,\"receiver\":\"77777777\",\"message\":{\"test\":\" test signal\",\"PrsId\":3,\"DriverId\":2,\"GUID\":\"1s3q1d-s546dq1-8e22e\",\"LineId\":2,\"SvcId\":2,\"Lat\":-78946.546547,\"Lon\":-68.546547,\"TimeStamp\":\"2021-03-18T08:29:36.758Z\",\"Recorder\":\"dq65ds4qdezzer\",\"Env\":\"PRD\"},\"operator\":20404,\"sender\":\"MSISDN\",\"binary\":1,\"sent\":\"2021-03-29T08:29:36.758Z\"}"}}
]

通过在Python中执行以下操作,我了解了如何使用单个对象完成此操作:

response['Body'] = json.loads(response['Body']['bytes'])

我做错了什么?难道连数组也不应该是一样的吗?

希望的结果会是这样

代码语言:javascript
复制
[
  {"id":1,"receiver":"77777777","message":{"test":" test signal","VehId":3,"DriverId":2,"GUID":"1s3q1d-s546dq1-8e22e","LineId":2,"SvcId":2,"Lat":-64.546547,"Lon":-68.546547,"TimeStamp":"2021-03-18T08:29:36.758Z","Recorder":"dq65ds4qdezzer","Env":"PRD"},"operator":20404,"sender":"MSISDN","binary":1,"sent":"2021-03-29T08:29:36.758Z"},
  {"id":1,"receiver":"77777777","message":{"test":" test signal","VehId":3,"DriverId":2,"GUID":"1s3q1d-s546dq1-8e22e","LineId":2,"SvcId":2,"Lat":-64.546547,"Lon":-68.546547,"TimeStamp":"2021-03-18T08:29:36.758Z","Recorder":"dq65ds4qdezzer","Env":"PRD"},"operator":20404,"sender":"MSISDN","binary":1,"sent":"2021-03-29T08:29:36.758Z"},
  {"id":1,"receiver":"77777777","message":{"test":" test signal","VehId":3,"DriverId":2,"GUID":"1s3q1d-s546dq1-8e22e","LineId":2,"SvcId":2,"Lat":-64.546547,"Lon":-68.546547,"TimeStamp":"2021-03-18T08:29:36.758Z","Recorder":"dq65ds4qdezzer","Env":"PRD"},"operator":20404,"sender":"MSISDN","binary":1,"sent":"2021-03-29T08:29:36.758Z"}
]

编辑:当我试图与数组一起使用它时,我得到了以下错误:我试图解析的文件如下:(结果:失败异常: TypeError:列表索引必须是整数或片,而不是str )

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2021-04-08 22:20:48

response是一个列表,所以你用一个字符串来索引一个列表。

response['Body'] = [json.loads(item['Body']['bytes']) for item in response]应该能工作。

票数 1
EN

Stack Overflow用户

发布于 2021-04-08 22:22:13

我觉得你在找这个?

代码语言:javascript
复制
for dict1 in x:
   print(dict1["Body"]["bytes"])

您的错误是,您没有遍历列表中的数据。

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

https://stackoverflow.com/questions/67012515

复制
相关文章

相似问题

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