今天在觀察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的結構:
“名稱/值”對的集合(A collection of name/value pairs)。不同的語言中,它被理解爲對象(object),紀錄(record),結構(struct),字典(dictionary),哈希表(hash table),有鍵列表(keyed list),或者關聯數組 (associative array)。
值的有序列表(An ordered list of values)。在大部分語言中,它被理解爲數組(array)。
對象是一個無序的“‘名稱/值’對”集合。一個對象以“{”(左括號)開始,“}”(右括號)結束。每個“名稱”後跟一個“:”(冒號);“‘名稱/值’ 對”之間使用“,”(逗號)分隔。
數組是值(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的學習再深入一點再回頭來看看,應該會有很大的改進!
:)