Json简介:Json,全名JavaScript Object Nation,是一种轻量级的数据交换格式。 具体含义见百度百科。
Json最为广泛的应用是作为AJAX中web服务器和客户端的通讯的数据格式。在http请求中也经常用到。
在 JS 语言中,一切都是对象。因此,任何支持的类型都可以通过 JSON 来表示,例如字符串、数字、对象、数组等。但是对象和数组是比较特殊且常用的两种类型。
在python中,主要体现在几个函数中:json.dumps(),json.dump(),json.loads(),json.load().见代码:
函数用法可以参考菜鸟教程:http://www.runoob.com/python3/python3-json.html,
http://www.runoob.com/python/python-json.html。
import json
#json.dumps()用法 将python对象编码成json字符串。
#语法
'''
参数很多
json.dumps(obj, skipkeys=False, ensure_ascii=True, check_circular=True,
allow_nan=True, cls=None, indent=None, separators=None, encoding="utf-8",
default=None, sort_keys=False, **kw)
'''
"""
#python对象与json对象的互相转换
#json对象的类型为 ‘str’
dic = {'a':'arts','b':'bird'}
j1 = json.dumps(dic) # json.dump()将字典类型转换为str字符串类型
print j1 # {"a": "arts", "b": "bird"}
print type(j1) # <type 'str'>
#sort_keys参数置为True时,生成的json对象是按键排序的,sort_keys默认为False:
dic2 = {'d':'4','b':'2','c':'3','a':123}
j2 = json.dumps(dic2,sort_keys=True)
print j2 # {"a": 123, "b": "2", "c": "3", "d": "4"}
#dumps对中文使用ascii编码方式,通过将ensure_ascii参数设置为False可输出中文:
dic3 = {u'你':'4',u'我':'2',u'他':'3',u'哈':123}
j3 = json.dumps(dic3,sort_keys=True,ensure_ascii=False)
print j3
# 通过indent参数可以设置json对象的缩进格式:
dic4 = {'b':'I','a':123,'c':'100'}
j4 = json.dumps(dic4,sort_keys=True,indent=4)
print j4
#通过separators参数可以设置json对象的分隔符:
dic5 = {'b':'I','a':123,'c':'100'}
j5 = json.dumps(dic5,sort_keys=True,separators=('**','@'))
print j5
#列表转化为json对象
list1 = [1,2,'big','a','ha']
j6 = json.dumps(list1)
print j6,type(j6) # [1, 2, "big", "a", "ha"] <type 'str'>
# 将字典转换为json字符串时,key需为数字或字母,(即键必须是一个字符串)否则报错,可通过skipkeys参数跳过这些键:
dic7 = {1:'one',2.9:'pop',(2,3):'hahahh'}
j7 = json.dumps(dic7,skipkeys=True)
print j7 # {"1": "one", "2.9": "pop"}
#元祖转化为json
tuple1 = (1,22,2)
j8 = json.dumps(tuple1)
print j8,type(j8) # [1, 22, 2] <type 'str'>
"""
#json.loads 用于解码json数据,返回python字段的数据类型
jsonData = '{"a":1,"b":2}'
text = json.loads(jsonData)
print text,type(text) # {u'a': 1, u'b': 2} <type 'dict'>
#存取json数据
#json.dump()函数 json.load()
'''
#dump()函数 存json文件,将python对象存到json格式的文件中
dic_info = {'name':'cai','age':'24'}
filew = open ('test.json','w')
json.dump(dic_info,filew)
filew.close()
#json.load()读取json文件内容
filer = open('test.json','r')
text = json.load(filer)
filer.close()
print text # {u'age': u'24', u'name': u'cai'}
'''
data = {
'no' : 1,
'name' : 'Runoob',
'url' : 'http://www.baidu.com'
}
#写入json数据
# 打开文件data.json文件,如果没有文件,就创建,有的话直接写入
with open('data.json','wb') as f:
json.dump(data,f)
#读取数据
with open('data.json','r') as f:
data = json.load(f)
print data # {u'url': u'http://www.baidu.com', u'name': u'Runoob', u'no': 1}