python操作json_python操作json(一)

Python 操作json

Json语法规则:

数据在名称/值对中

数据由逗号分隔

花括号保存对象

方括号保存数组

Json字符串本质上是一个字符串,用单引号表示

Json数据的书写格式

名称--值对,包括名称字段(在双引号中),后面跟一个冒号,然后是值:

“name”: ”zhangsan” 等价于name = “zhangsan”

Json值

值可以是

数字(整数或浮点数)

字符串(双引号括起来)

逻辑值(true或false)

数组(在方括号中)

对象(在花括号中)

null

Json对象

Json的对象是在大括号中的,

{“name”:”zhangsan”,”age”:20}

等价 name=”zhangsan” age = 20

Json数组

Json数组是在中括号中的,数组可以包含多个对象

{

"employees": [

{ "firstName":"John" , "lastName":"Doe" },

{ "firstName":"Anna" , "lastName":"Smith" },

{ "firstName":"Peter" , "lastName":"Jones" }

]

}

Employees是包含三个对象的数组

编码Json.dumps()

将一个python对象编码成json字符串,

Python的列表转换成json数组

json.dumps([1,2,3,"a"])

'[1, 2, 3, "a"]'

Python的字符串转换成json字符串

json.dumps("abc123")

'"abc123"'

Python元组转换成json数组

json.dumps((1,2,3,"a","b"))

'[1, 2, 3, "a", "b"]'

Python的字典转换成json的对象

json.dumps({1:"a",2:"b",3:"c"})

'{"1": "a", "2": "b", "3": "c"}'#注意1、2、3被加上了双引号,因为json的名称是必须要加双引号的

Python的数字(long型)转换成json的数字

json.dumps(13L)

'13'

Python的数字(int)转换成json的数字

json.dumps(13)

'13'

Python的unicode字符串转换成json的字符串

json.dumps(u"abC")

'"abC"'

Python的True转换成json的true

json.dumps(True)

'true'

Python的False转换成json的false

json.dumps(False)

'false'

Python的None转换成json的null

json.dumps(None)

'null'

type(json.dumps("abc"))#json本质上是一个字符串

怎么判断一个json 是不是合法的?

用try except

try:

json.loads('"abc"')

except Exception,e:

print e

else:

print "ok"

json.dumps()函数参数应用

sort_keys

是否按key排序,sort_keys = True升序排序

#coding=utf-8

import json

data = [ { 'a':'A', 'b':(2, 4), 'c':3.0 }]

print json.dumps(data)

print json.dumps(data, sort_keys=True)

indent

设置参数缩进显示的空格数。缩进显示使读起来更加清晰。

#coding=utf-8

import json

data = [{"a": "A", "b": [2, 4], "c": 3.0}]

print json.dumps(data, sort_keys=True, indent=3)

Separators

参数的作用是去掉逗号“,”和分号“:”后面的空格,从上面的输出果都能看到“,”与“:”后面都有个空格,这都是为了美化输出结果的作用,但是在我们传输数据的过程中,越精简越好,冗余的东西全部去掉,因此就可以加上separators参数对传输的json串进行压缩。该参数是元组格式的

import json

data = [{"a": "A", "b": [2, 4], "c": 3.0}]

print len(json.dumps(data))

去掉编码后的json串中,和:后面的空格

print len(json.dumps(data, separators=(',',':')))

skipkeys

在encoding过程中,dict对象的key只可以是基本数据类型(str,unicode,int,long,float,bool,None),如果是其他类型,那么在编码过程中就会抛出TypeError的异常。skipkeys可以跳过那些非string对象的key的处理,就是不处理

import json

data= [ { 'a':'A', 'b':(2, 4), 'c':3.0, (1,2):'D tuple' } ]

print u"不设置skipkeys 参数"

try :

res1 = json.dumps(data) #skipkeys参数默认为False时

except Exception, e:

print e

print u"设置skipkeys 参数"

print json.dumps(data, skipkeys=True)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值