python裡json的排序

來源:互聯網
上載者:User

標籤:

寫一下json排序的問題:

將得到的資料轉換成json格式傳給ajax,會發現前台得到的資料很有可能和我們在背景內容’不太一樣‘,如果不出意外,json進行了自排序處理,至於按什麼格式排的我還沒研究,當然應該不是字母順序

那如果我們想在前台按照字母順序或者數字順序排序要怎麼做呢?

如果是數群組類型的json對象,排序可以使用array.sort,

var people = [{    name: ‘a75‘,    item1: false },{    name: ‘z32‘,    item1: true },{    name: ‘e77‘,    item1: false }];

function sortByKey(array, key) {
    return array.sort(function(a, b) {
        var x = a[key]; var y = b[key];
        return ((x < y) ? -1 : ((x > y) ? 1 : 0));
    });
}

people = sortByKey(people, ‘name‘);
得到結果是a75,e77,z32按照這個順序的。

那如果不是數群組類型json對象呢,寫兩組資料對比下

data1 = {‘b‘:789,‘c‘:456,‘a‘:123}

data2 =  { ‘a‘ : 123 , ‘b‘ : 789 , ‘c‘ : 456 } d1 =  json.dumps(data1,sort_keys = True ) d2 =  json.dumps(data2) d3 =  json.dumps(data2,sort_keys = True ) print  d1 print  d2 print  d3 print  d1 = = d2 print  d1 = = d3

輸出:

{"a": 123, "b": 789, "c": 456} 
{"a": 123, "c": 456, "b": 789} 
{"a": 123, "b": 789, "c": 456} 
False 
True

這裡使用了sort_keys這個參數。 btw

indent參數是縮排的意思,它可以使得資料存放區的格式變得更加優雅。

data1  =  { ‘b‘ : 789 , ‘c‘ : 456 , ‘a‘ : 123 } d1  =  json.dumps(data1,sort_keys = True ,indent = 4 ) print  d1 

輸出:


    "a": 123, 
    "b": 789, 
    "c": 456 
}

輸出的資料被格式化之後,變得可讀性更強,但是卻是通過增加一些冗餘的空白欄框來進行填充的。json主要是作為一種資料通訊的格式存在的,而網路通訊是很在乎資料的大小的,無用的空格會佔據很多通訊頻寬,所以適當時候也要對資料進行壓縮。separator參數可以起到這樣的作用,該參數傳遞是一個元組,包含分割對象的字串。

print  ‘DATA:‘ repr (data) print  ‘repr(data)             :‘ len ( repr (data)) print  ‘dumps(data)            :‘ len (json.dumps(data)) print  ‘dumps(data, indent=2)  :‘ len (json.dumps(data, indent = 4 )) print  ‘dumps(data, separators):‘ len (json.dumps(data, separators = ( ‘,‘ , ‘:‘ )))

輸出:

DATA: {‘a‘: 123, ‘c‘: 456, ‘b‘: 789} 
repr(data)             : 30 
dumps(data)            : 30 
dumps(data, indent=2)  : 46 
dumps(data, separators): 25

通過移除多餘的空白符,達到了壓縮資料的目的,而且效果還是比較明顯的。

另一個比較有用的dumps參數是skipkeys,預設為False。 dumps方法儲存dict對象時,key必須是str類型,如果出現了其他類型的話,那麼會產生TypeError異常,如果開啟該參數,設為True的話,則會比較優雅的過度。

data  =  { ‘b‘ : 789 , ‘c‘ : 456 ,( 1 , 2 ): 123 } print  json.dumps(data,skipkeys = True

輸出:

{"c": 456, "b": 789}

  

 

python裡json的排序

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.