使用Python从JSON获取值


70

当我尝试从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

我需要怎么做才能得到latand的值lon?(444555


4
您的第一个示例对我有用。它给你的错误是什么?
mgilson 2012年

1
(无关),您的第二个循环可以写为' '.join(data)
mgilson 2012年

使用GAE与Python 2.7和瓶子,它给了我“INFO 2012年9月10日13:54:58583 dev_appserver.py:2967] ”POST /应用/ 939393 /位置HTTP / 1.1“ 500 - ” GAE登录控制台
BrunoVillanova

错误回溯在这里可能很有用,因为第一部分中的代码还可以。它不能引发与该问题相关的错误(至少对于python 3.6),错误必须在导入或函数使用中(作为返回值存在)
Igor Tischenko,

Answers:


99

如果要遍历字典的键和值,请执行以下操作:

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

63

这给你什么错误?

如果您确实这样做:

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

然后:

data['lat']

绝对不要给您任何错误。


12

使用Python从提供的Json中提取值

Working sample:-

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

6

有一个Py库,其中包含一个模块,可以方便地访问类似于Json的字典键值作为属性:https : //github.com/asuiu/pyxtension 可以将其用作:

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

在此庄园中使用时,您会得到对象的键,而不是值,因此可以通过使用键作为索引来获得值。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.