2013-03-13 59 views
0

我試圖從JSON文件中提取數據。這是我的代碼。如何在Python中解析JSON中的鍵:值對中的值

import json 
json_file = open('test.json')                               
data = json.load(json_file) 
json_file.close() 

在這一點上,我可以使用打印數據打印文件,看起來文件已被正確讀入。

現在我想從嵌套在字典(Phew!)中的嵌套列表中的字典中的鍵值對獲取值。我最初的策略是創建一個字典並將其嵌套在列表中的字典中,然後提取我需要的鍵值對。

dict = {} 
dict = json_file.get('dataObjects', None) 
dict[0] 

當我試圖查看字典的內容時,我看到只有一個元素。整個字典似乎已被讀爲一個列表。我已經嘗試了幾種不同的方法,但我仍然把一本字典看成一個列表。我很想抓住嵌套字典並使用另一個.get來獲取我需要的值。以下是我正在使用的JSON的示例。具體來說,我試圖從dataObjects部分提取標識符和描述值。

{ 
    "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" 
     } 
     ], 
    } 
    ] 
} 

回答

0

您提供無法通過JSON讀取源,有兩個逗號在那裏,你必須刪除(從底部起的第四行中的一個,和一個兩行以上dataObjects。 只有在json模塊解析沒有錯誤:

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() 
相關問題