python获取json的key_如何从Python中解析的JSON中的key:value对中获取值

I am trying to extract data from a JSON file. Here is my code.

import json

json_file = open('test.json')

data = json.load(json_file)

json_file.close()

At this point I can print the file using print data and it appears that the file has been read in properly.

Now I would like to grab a value from a key:value pair that is in a dictionary nested within a list nested within a dictionary (Phew!). My initial strategy was to create a dictionary and plop the dictionary nested within the list in it and then extract the key:value pairs I need.

dict = {}

dict = json_file.get('dataObjects', None)

dict[0]

When I try to look at the contents of dict, I see that there is only one element. The entire dictionary appears to have been read as a list. I've tried a couple of different approaches, but I still wind up with a dictionary read as a list. I would love to grab the nested dictionary and use another .get to grab the values I need. Here is a sample of the JSON I am working with. Specifically, I am trying to pull out the identifier and description values from the dataObjects section.

{

"identifier": 213726,

"scientificName": "Carcharodon carcharias (Linnaeus, 1758)",

"richness_score": 89.6095,

"synonyms": [

],

"taxonConcepts": [

{

"identifier": 20728481,

"scientificName": "Carcharodon carcharias (Linnaeus, 1758)",

"nameAccordingTo": "WORMS Species Information (Marine Species)",

"canonicalForm": "Carcharodon carcharias",

"sourceIdentfier": "105838"

},

{

"identifier": 24922984,

"scientificName": "Carcharodon carcharias",

"nameAccordingTo": "IUCN Red List (Species Assessed for Global Conservation)",

"canonicalForm": "Carcharodon carcharias",

"sourceIdentfier": "IUCN-3855"

},

],

"dataObjects": [

{

"identifier": "5e1882d822ec530069d6d29e28944369",

"dataObjectVersionID": 5671572,

"dataType": "http://purl.org/dc/dcmitype/Text",

"dataSubtype": "",

"vettedStatus": "Trusted",

"dataRating": 3.0,

"subject": "http://rs.tdwg.org/ontology/voc/SPMInfoItems#TaxonBiology",

"mimeType": "text/html",

"title": "Biology",

"language": "en",

"license": "http://creativecommons.org/licenses/by-nc-sa/3.0/",

"rights": "Copyright Wildscreen 2003-2008",

"rightsHolder": "Wildscreen",

"audience": [

"General public"

],

"source": "http://www.arkive.org/great-white-shark/carcharodon-carcharias/",

"description": "Despite its worldwide notoriety, very little is known about the natural ecology and behaviour of this predator. These sharks are usually solitary or occur in pairs, although it is apparently a social animal that can also be found in small aggregations of 10 or more, particularly around a carcass (3) (6). Females are ovoviviparous; the pups hatch from eggs retained within their mother's body, and she then gives birth to live young (10). Great white sharks are particularly slow-growing, late maturing and long-lived, with a small litter size and low reproductive capacity (8). Females do not reproduce until they reach about 4.5 to 5 metres in length, and litter sizes range from two to ten pups (8). The length of gestation is not known but estimated at between 12 and 18 months, and it is likely that these sharks only reproduce every two or three years (8) (11). After birth, there is no maternal care, and despite their large size, survival of young is thought to be low (8). Great whites are at the top of the marine food chain, and these sharks are skilled predators. They feed predominately on fish but will also consume turtles, molluscs, and crustaceans, and are active hunters of small cetaceans such as dolphins and porpoises, and of other marine mammals such as seals and sea lions (12). Using their acute senses of smell, sound location and electroreception, weak and injured prey can be detected from a great distance (7). Efficient swimmers, sharks have a quick turn of speed and will attack rapidly before backing off whilst the prey becomes weakened; they are sometimes seen leaping clear of the water (6). Great whites, unlike most other fish, are able to maintain their body temperature higher than that of the surrounding water using a heat exchange system in their blood vessels (11).",

"agents": [

{

"full_name": "ARKive",

"homepage": "http://www.arkive.org/",

"role": "provider"

}

],

}

]

}

解决方案

The source you provide cannot be read by json, there are two comma's in there that you have to delete (the one on the fourth line from the bottom, and the one two lines above dataObjects.

Only after that does the json module parse without error:

import json

json_file = open('test.json')

data = json.load(json_file)

do = data['dataObjects'][0]

print do['identifier']

print do['description']

json_file.close()

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值