使用Python从JSON中获取值

110

当我尝试从JSON字符串中检索值时,它会给我一个错误:

data = json.loads('{"lat":444, "lon":555}')
return data["lat"]

但是,如果我遍历数据,它会给我元素(latlon),但不是值:

data = json.loads('{"lat":444, "lon":555}')
    ret = ''
    for j in data:
        ret = ret + ' ' + j
return ret

返回结果为:lat lon

我需要做什么才能获得latlon的值?(分别为444555


4
第一个例子对我有效。它给你的错误是什么? - mgilson
1
(无关紧要),你的第二个循环可以写成' '.join(data) - mgilson
使用Python 2.7和Bottle与GAE一起使用时,GAE日志控制台会给出以下信息:"INFO 2012-09-10 13:54:58,583 dev_appserver.py:2967] "POST /app/939393/position HTTP/1.1" 500 -" - BrunoVillanova
错误回溯可能在这里很有用,因为第一部分的代码是正确的。它不能抛出与问题相关的错误(至少对于Python 3.6而言),错误必须在导入或函数使用中(因为存在返回)。 - Igor Tischenko
5个回答

136

如果你想遍历字典的键和值,可以这样做:

for key, value in data.items():
    print(key, value)

87

它给出了什么错误信息?

如果您完全按照以下步骤执行:

data = json.loads('{"lat":444, "lon":555}')

那么:

data['lat']

不应该出现任何错误。


21

使用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'])

data.json()['test1'] !!!! - Mohammad reza Golshahi

6
有一个Python库可以帮助你将Json格式的字典转化为属性访问方式,该库名为pyxtension,你也可以在Github源代码中查看。
使用方法如下:
j = Json('{"lat":444, "lon":555}')
j.lat + ' ' + j.lon

5
使用您的代码,这是我会这样做的方式。虽然已经选择了一个答案,但仅提供其他选项。
data = json.loads('{"lat":444, "lon":555}')
    ret = ''
    for j in data:
        ret = ret+" "+data[j]
return ret

当您以这种方式使用“for”时,您会获得对象的键,而不是值,因此您可以使用键作为索引来获取值。

在Python中,不建议使用迭代键并从字典中获取相应值的方法。请改用for key, value in data.items():。这种方法更易读,更少出错(如果关心效率,也更高效)。 - Neuron

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接