JSON: JavaScript Object Notation(JavaScript 对象表示法)
JSON 是一种轻量级的数据交换格式。类似 XML,但是JSON 比 XML 更小、更快,更易解析。
JSON最广泛的应用是作为AJAX中web服务器和客户端的通讯数据公司,现在叶常用于http请求中。
Encode过程,是把python对象转换成json对象的一个过程,常用的两个函数是dumps和dump函数
1.json.dump()
-
#!/usr/bin/env python
-
# -*- coding:utf-8 -*-
-
# Author :Alvin.xie
-
# @Time :2017-11-13 14:28
-
# @file :json1.py
-
-
-
import json
-
-
jsondata = "{'a':1,'b':2,'c':3,'d':4,'e':5}"
-
f = open('a.txt','w')
-
json.dump(jsondata,f)
-
f.close
执行结果:
a.txt
"{'a':1,'b':2,'c':3,'d':4,'e':5}"
2.json.dumps()
-
In [1]: import json
-
-
In [2]: data = {"name" : "kate", "age" : 22}
-
-
In [3]: in_json = json.dumps(data)
-
-
In [4]: in_json
-
Out[4]: '{"age": 22, "name": "kate"}'
data是一个python数据字典,最后通过json.dumps()把data转换成字符串的形式。
区别:dump把python对象转换成json对象生成一个fp的文件流,而dumps则是生成了一个字符串:
-
In [5]: dic1 = {'type':'dic1','username':'loleina','age':16}
-
-
In [6]: json_dic1 = json.dumps(dic1)
-
-
In [7]: print json_dic1
-
{"username": "loleina", "age": 16, "type": "dic1"}
-
-
In [8]: json_dic2 = json.dumps(dic1,sort_keys=True,indent =4,separators=(',', ': '),encoding="gbk",ensure_ascii=True )
-
-
In [9]: print json_dic2
-
{
-
"age": 16,
-
"type": "dic1",
-
"username": "loleina"
-
}
Decode过程,是把json对象转换成python对象的一个过程,常用的两个函数是loads和load函数。区别跟dump和dumps是一样的。
-
#!/usr/bin/env python
-
# -*- coding:utf-8 -*-
-
# Author :Alvin.xie
-
# @Time :2017-11-13 15:14
-
# @file :json2.py
-
import json
-
-
-
# 将python对象test转换json对象
-
test = [{"username":"卡通","age":26},(2,3),1]
-
print type(test)
-
python_to_json = json.dumps(test,ensure_ascii=False)
-
print python_to_json
-
print type(python_to_json)
-
-
# 将json对象转换成python对象
-
json_to_python = json.loads(python_to_json)
-
print json_to_python
-
print type(json_to_python)
执行结果:
从上面2个例子的测试结果可以看到,python的一些基本类型通过encode之后,tuple类型就转成了list类型了,再将其转回为
python对象时,list类型也并没有转回成tuple类型,而且编码格式也发生了变化,变成了Unicode编码。具体转化时,类型变化
规则如下所示:
将一个JSON字典转换为一个Python对象Python
-
In [20]: import json
-
-
In [21]: data = '{"a":"A","b":[2,4],"c":3.0}'
-
-
In [22]: aa = json.loads(data)
-
-
In [23]: print aa
-
{u'a': u'A', u'c': 3.0, u'b': [2, 4]}
阅读(1337) | 评论(0) | 转发(0) |