python裡json的排序

2022-08-30 10:12:11 字數 2926 閱讀 7216

寫一下json排序的問題:

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

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

如果json裡鍵值對以這樣組合 ,排序是不需要擔心的,會安裝id順序排列

如果是陣列型別的json物件,排序可以使用array.sort,

var people = [,,];

function sortbykey(array, key) );

}people = sortbykey(people, 'name');

得到結果是a75,e77,z32按照這個順序的。

那如果不是陣列型別json物件呢,寫兩組資料對比下

data1=

data2=

d1=json.dumps(data1,sort_keys=true)

d2=json.dumps(data2)

d3=json.dumps(data2,sort_keys=true)

printd1

printd2

printd3

printd1==d2

printd1==d3

輸出:   

false 

true

這裡使用了sort_keys這個引數。

btwindent引數是縮排的意思,它可以使得資料儲存的格式變得更加優雅。

data1=

d1=json.dumps(data1,sort_keys=true,indent=4)

printd1

輸出:輸出的資料被格式化之後,變得可讀性更強,但是卻是通過增加一些冗餘的空白格來進行填充的。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:  

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=

printjson.dumps(data,skipkeys=true

輸出:

Go語言裡的Json

json是一種輕量級資料交換格式,具有靈活 易於閱讀的特點,在網際網路行業有廣泛的應用。go語言執行時裡自帶了encoding json包,提供了marshal 和unmarshal 兩個函式進行編碼和解碼,兩個函式原型如下 func marshal v inte ce byte,error fun...

Go語言裡的Json

json是一種輕量級資料交換格式,具有靈活 易於閱讀的特點,在網際網路行業有廣泛的應用。go語言執行時裡自帶了encoding json包,提供了marshal 和unmarshal 兩個函式進行編碼和解碼,兩個函式原型如下 func marshal v inte ce byte,error fun...

在java裡拼接JSON

1.錯誤的格式 parenttypesjson 這裡的 有問題,因為這裡需要傳遞陣列,所以是 這個有問題。2.錯誤的格式 parenttypesjson 這裡冒號後面就為空了,拼接還是有問題。3.正確的格式 string typeswithselectcontroljson string paren...