python里json的排序

写一下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}

时间: 2024-07-31 14:21:21

python里json的排序的相关文章

python对json的相关操作以及json模块的简要分析

JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式.易于人阅读和编写.同时也易于机器解析和生成. JSON有两种结构: 第一种就是"名称/值"对的集合.在python中相当于字典类型,在其他语言中,它被理解为对象(object),纪录(record),结构(struct),字典(dictionary),哈希表(hash table),有键列表(keyed list),或者关联数组 (associative array). 第二种就是值的有序列表

[转]python对json的相关操作

json官方说明参见:http://json.org/ Python操作json的标准api库参考:http://docs.python.org/library/json.html 对简单数据类型的encoding 和 decoding: 使用简单的json.dumps方法对简单数据类型进行编码,例如: 1 2 3 4 5 6 import json obj = [[1,2,3],123,123.123,'abc',{'key1':(1,2,3),'key2':(4,5,6)}] encoded

Json概述以及python对json的相关操作

转载自:http://www.cnblogs.com/coser/archive/2011/12/14/2287739.html 什么是json: JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式.易于人阅读和编写.同时也易于机器解析和生成.它基于JavaScript Programming Language, Standard ECMA-262 3rd Edition - December 1999的一个子集.JSON采用完全独立于语言的文本格式,但

Json概述以及python对json的相关操作《转》

什么是json: JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式.易于人阅读和编写.同时也易于机器解析和生成.它基于JavaScript Programming Language, Standard ECMA-262 3rd Edition - December 1999的一个子集.JSON采用完全独立于语言的文本格式,但是也使用了类似于C语言家族的习惯(包括C, C++, C#, Java, JavaScript, Perl, Python等).这

python 解析json

一.概念 序列化(Serialization):将对象的状态信息转换为可以存储或可以通过网络传输的过程,传输的格式可以是JSON.XML等.反序列化就是从存储区域(JSON,XML)读取反序列化对象的状态,重新创建该对象. JSON(JavaScript Object Notation):一种轻量级数据交换格式,相对于XML而言更简单,也易于阅读和编写,机器也方便解析和生成,Json是JavaScript中的一个子集. Python2.6开始加入了JSON模块,无需另外下载,Python的Jso

python操作json

概念 序列化(Serialization):将对象的状态信息转换为可以存储或可以通过网络传输的过程,传输的格式可以是JSON.XML等.反序列化就是从存储区域(JSON,XML)读取反序列化对象的状态,重新创建该对象. JSON(JavaScript Object Notation):一种轻量级数据交换格式,相对于XML而言更简单,也易于阅读和编写,机器也方便解析和生成,Json是JavaScript中的一个子集. Python2.6开始加入了JSON模块,无需另外下载,Python的Json模

python解析json

认识 JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式.它基于JavaScript(Standard ECMA-262 3rd Edition - December 1999)的一个子集. JSON采用完全独立于语言的文本格式,但是也使用了类似于C语言家族的习惯(包括C, C++, C#, Java, JavaScript, Perl, Python等).这些特性使JSON成为理想的数据交换语言.易于人阅读和编写,同时也易于机器解析和生成. 引用模块

python对json的相关操作

什么是json: JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式.易于人阅读和编写.同时也易于机器解析和生成.它基于JavaScript Programming Language, Standard ECMA-262 3rd Edition - December 1999的一个子集.JSON采用完全独立于语言的文本格式,但是也使用了类似于C语言家族的习惯(包括C, C++, C#, Java, JavaScript, Perl, Python等).这

python处理JSON

概念 序列化(Serialization):将对象的状态信息转换为可以存储或可以通过网络传输的过程,传输的格式可以是JSON.XML等.反序列化就是从存储区域(JSON,XML)读取反序列化对象的状态,重新创建该对象. JSON(JavaScript Object Notation):一种轻量级数据交换格式,相对于XML而言更简单,也易于阅读和编写,机器也方便解析和生成,Json是JavaScript中的一个子集. Python2.6开始加入了JSON模块,无需另外下载,Python的Json模