在python中获取json对象的json对象?

时间:2015-12-15 18:39:25

标签: python json

如何获取另一个json中的json对象? 我有一个url,它返回一个json对象(用ruby制作),其中包含另一个json对象,例如:

json =
{"country":"canada", 
   "tours":"[
          {\"title\":\"Canadian Rockies Trail\",\"price\":\"$2249\"},
          {\"title\":\"2-Day Fantasy Island Getaway\",\"price\":\"$269\"}
            ]"}

然后,我想在“游览”元素中获取对象,这是另一个json。

我已经尝试json.load(json)['tours']以“游览”方式提供数据,但是以字符串格式提供给我,因此,我无法操纵数据。是否有任何解析方法可以将其作为Json而不是字符串?

我想获得如下数据:

Canadian Rockies Trail ; price $2249

2-Day Fantasy Island Getaway; price $269

3 个答案:

答案 0 :(得分:0)

你应该将你的字典命名为json以外的东西,因为它会与你的导入冲突。假设它被称为json_dict,

json.loads(json_dict['tours'])

应该这样做

答案 1 :(得分:0)

我在这里看到的问题是你的json['tours']是一个json编码的字符串。您应该使用json.loads(str)将其转换为字典。我会就地这样做并访问它。

见下面的代码

import json

foo ={"country":"canada", 
   "tours":"[{\"title\":\"Canadian Rockies Trail\",\"price\":\"$2249\"},{\"title\":\"2-Day Fantasy Island Getaway\",\"price\":\"$269\"}]"}

foo['tours'] = json.loads(foo['tours']) # turn tours into dict

for tour in foo['tours']:
    print "tour name : {} :::: tour price: {}".format(tour['title'],tour['price']) # tour is a dict now.

答案 2 :(得分:0)

你的json中不需要所有的\。你的json应该是这样的。

j_dict = {"country": "canada",
          "tours": [{"title":"Canadian Rockies Trail","price":"$2249"},{"title":"2-Day Fantasy Island Getaway","price":"$269"}]}

那么你的程序应该如下所示。首先,您需要将字典转换为json字符串。

import json

j_string = json.dumps(j_dict)
foobar = json.loads(j_string)['tours']