首页 > 解决方案 > 将 JSON 字符串转换为列表并访问其中的第三个元素

问题描述

我有一个如下所示的 JSON 字符串:

[["1", 1, "hy3mRUeEcb18NLC1"], {}]

我像这样加载字符串: taskParams = json.loads(x.task_params)[0]

因为有多个 JSON 对象,我只想要第一个。

然后我尝试访问第三个元素,或者在列表索引中访问 2. 索引,如下所示:

print(taskParams[2])

它给了我以下错误:

列表索引超出范围

显然不是。

为了澄清完整的代码:

taskParams = json.loads(x.task_params)[0] 
print(taskParams[2])

从开始的完整输出:

[["1", 1, "hy3mRUeEcb18NLC1"], {}]
[[], {}]
[[], {}]

json.loads() 之后的输出

['1', 1, 'hy3mRUeEcb18NLC1']

我想要的输出: hy3mRUeEcb18NLC1

标签: pythonjson

解决方案


根据https://www.json.org/json-en.html的规范,字符串需要用双引号引起来:

字符串是零个或多个 Unicode 字符的序列,用双引号括起来,使用反斜杠转义。字符表示为单个字符串。字符串与 C 或 Java 字符串非常相似。

一个可行的解决方案的例子是:

import json
x = '["1", 1, "hy3mRUeEcb18NLC1"]'
taskParams = json.loads(x)
print(taskParams[2])

哪个输出

hy3mRUeEcb18NLC1

对于较长的 JSON 字符串,您可以这样做:

import json
x = '[["1", 1, "hy3mRUeEcb18NLC1"], {}]'
taskParams = json.loads(x)[0]
print(taskParams[2])

推荐阅读