今天在觀察python腳本的時候,看到了python解析jason資料這麼一段。
經過相關查找,終于弄清楚了python是怎麼解析jason結構,取得資料的。
我們通過以下指令:
target = urlopen(url, 'utf8')
try:
target = json.loads(target)
except:
print 'load json error!!'
取得了這麼一段jason資料:
{
"title": "報表",
"tables": {
"example1": {
"id": "first",
"values": [
{
"key": "one",
"value": "1234"
},
{
"key": "two",
"value": "12345"
},
{
"key": "three",
"value": "123456"
},
]
},
"example2": {
"id": "second",
"values": [
{
"key": "four",
"value": "321"
},
{
"key": "five",
"value": "4321"
},
},
}
}
我們應該如何拿到裡面的資料呢?比如說拿到key為“three”,value為“123456”的值,那麼我們可以這樣擷取資料:
get_value = target['tables']['example1']['values'][2]['value']
首先,需要了解jason的結構:
寫道 JSON建構于兩種結構:
“名稱/值”對的集合(A collection of name/value pairs)。不同的語言中,它被了解為對象(object),紀錄(record),結構(struct),字典(dictionary),哈希表(hash table),有鍵清單(keyed list),或者關聯數組 (associative array)。
值的有序清單(An ordered list of values)。在大部分語言中,它被了解為數組(array)。
寫道 JSON具有以下這些形式:
對象是一個無序的“‘名稱/值’對”集合。一個對象以“{”(左括号)開始,“}”(右括号)結束。每個“名稱”後跟一個“:”(冒号);“‘名稱/值’ 對”之間使用“,”(逗号)分隔。

數組是值(value)的有序集合。一個數組以“[”(左中括号)開始,“]”(右中括号)結束。值之間使用“,”(逗号)分隔。
值(value)可以是雙引号括起來的字元串(string)、數值(number)、true、false、 null、對象(object)或者數組(array)。這些結構可以嵌套。
而python會把對應的jason結構翻譯過來,對應的關系如下:
JSON | Python |
---|---|
object | dict |
array | list |
string | unicode |
number (int) | int, long |
number (real) | float |
true | True |
false | False |
null | None |
是以我們使用 get_value = target['tables']['example1']['values'][2]['value'] 就可以得到“123456”這個值。
同理,使用 get_value = target['tables']['example2']['values'][0]['key']就可以得到“four”這個值了。
本文隻是簡單的分析,并沒有深入研究,
待到對python的學習再深入一點再回頭來看看,應該會有很大的改進!
:)
參考:http://www.json.org/json-zh.html
http://docs.python.org/library/json.html