使用 Python 从 JSON 获取值
- 2025-04-16 08:55:00
- admin 原创
- 25
问题描述:
当我尝试从 JSON 字符串中检索值时,它给出了一个错误:
data = json.loads('{"lat":444, "lon":555}')
return data["lat"]
但是,如果我迭代数据,它会给我元素(lat
和lon
),但没有值:
data = json.loads('{"lat":444, "lon":555}')
ret = ''
for j in data:
ret = ret + ' ' + j
return ret
返回:lat lon
lat
我需要做什么才能获得和的值lon
?(444
和555
)
解决方案 1:
如果您想要迭代字典的键和值,请执行以下操作:
for key, value in data.items():
print(key, value)
解决方案 2:
它给你带来了什么错误?
如果你确实这样做:
data = json.loads('{"lat":444, "lon":555}')
然后:
data['lat']
根本不应该给您任何错误。
解决方案 3:
使用 Python 从提供的 Json 中提取值
工作样本:
import json
import sys
# load the data into an element
data = {"test1": "1", "test2": "2", "test3": "3"}
# dumps the json object into an element
json_str = json.dumps(data)
# load the json to a string
resp = json.loads(json_str)
# print the resp
print(resp)
# extract an element in the response
print(resp['test1'])
解决方案 4:
使用你的代码,我会这样做。我知道答案已经选好了,只是提供了一些额外的选项。
data = json.loads('{"lat":444, "lon":555}')
ret = ''
for j in data:
ret = ret+" "+data[j]
return ret
当您以这种方式使用“for”时,您将获得对象的键,而不是值,因此您可以使用键作为索引来获取值。
解决方案 5:
有一个 Py 库,它有一个模块,可以方便地访问类似 Json 的字典键值作为属性:pyxtension和
Github 源代码
您可以将其用作:
j = Json('{"lat":444, "lon":555}')
j.lat + ' ' + j.lon
解决方案 6:
使用 JSON 字符串(例如'{"lat":444, "lon":555}'
)json.loads()
会创建一个字典,因此要获取其值,可以像获取字典中的值一样进行操作。字典的迭代实际上是对其键的迭代(for j in data:
与 相同for j in data.keys():
);但是,要迭代其值,您需要使用.values()
:
import json
data = json.loads('{"lat":444, "lon":555}')
print(type(data)) # <class 'dict'>
print(data) # {'lat': 444, 'lon': 555}
for j in data.values(): # <--- iterate over values
pass
请注意,这json.loads
会将 JSON 数组转换为列表。如果您需要获取列表中字典的值,则需要先索引该字典的列表才能获取该值。这是一个很容易犯的错误,尤其是在 API 返回包含单个对象的 JSON 数组时。例如:
s = '[{"lat":444, "lon":555}]'
data = json.loads(s) # [{'lat': 444, 'lon': 555}]
data['lat'] # <--- TypeError
data[0]['lat'] # <--- OK
如果要从 JSON 文档中获取值,请先打开该文件,然后将文件句柄传递给json.load()
。根据文档结构,json.load()
将返回字典或列表,就像 一样json.loads()
。
import json
with open('data.json', 'r') as f:
data = json.load(f)
for j in data.values():
pass
相关推荐
热门文章
项目管理软件有哪些?
热门标签
曾咪二维码
扫码咨询,免费领取项目管理大礼包!
云禅道AD