天天看點

python解析jason資料

今天在觀察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具有以下這些形式:

對象是一個無序的“‘名稱/值’對”集合。一個對象以“{”(左括号)開始,“}”(右括号)結束。每個“名稱”後跟一個“:”(冒号);“‘名稱/值’ 對”之間使用“,”(逗号)分隔。

python解析jason資料

數組是值(value)的有序集合。一個數組以“[”(左中括号)開始,“]”(右中括号)結束。值之間使用“,”(逗号)分隔。

python解析jason資料

值(value)可以是雙引号括起來的字元串(string)、數值(number)、true、false、 null、對象(object)或者數組(array)。這些結構可以嵌套。

python解析jason資料

而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