一、json
JSON: JavaScript Object Notation(JavaScript 对象表示法)
JSON 是存储和交换文本信息的语法
1、json轻量级:语法规则
JSON 语法是 JavaScript 对象表示法语法的子集。
(1)数据在名称/值对中
(2)数据由逗号分隔
(3)一个花括号表示一个对象
(4)[]数组,可以存放多个对象
(5)字符串使用双引号
 
二、Python类型与json类型转换
1、把python的数据,转换为json格式
json.dumps(data,sort_keys=True,indent=4,separators=(',',':'),skipkeys=True,ensure_ascII=False)
sort_keys默认是false。是否按字典排序(a到z)输出:True(按字典排序)
indent:每个value对前面空4格显示
separators:使用制定的字符替换,参数的作用是去掉逗号“,”和分号“:”后面的空格
skipkeys:把有错误的数据忽略掉
ensure_ascii:默认是True:字符之外的显示为\u4e2d\u56fd
 
2、json解码:把json格式,转换成为python格式
json.loads()
json的object类型-----Python的dict类型
json的array类型------Python的list类型
 
import json
data = [{'a':'A','b':(2,4),'c':3.0,'d':None,'e':True}]
print data
dataJson = json.dumps(data,sort_keys=True,separators=(',',':'),indent=4,skipkeys=True)
print dataJson
 
print json.loads(dataJson)
 
3、编码过程中,Python中的list和tuple都被转化成json的数组,而解码后,json的数组最终被转化成Python的list的,无论是原来是list还是tuple。
 
三、序列化和反序列化
1、把python的类对象转换为json格式:使用dumps()函数中的default参数
import json
class Employee(object):
def __init__(self,name,age,sex,tel):
self.name = name
self.age = age
self.sex = sex
self.tel = tel
# 将序列化函数定义到类里面
def objJson(self):
return {
'name':self.name,
'age':self.age,
'sex':self.sex,
'tel':self.tel
}
 
e1 = Employee('andy','24','male','131xxxxxxxx')
print json.dumps(e1,default=e1.objJson)
 
#另一个更简单的方法
e1=Employee('andy','24','male','131xxxxxxxx')
# print json.dumps(e1,default=e1.objJson)
print json.dumps(e1.__dict__)
通常class及其实例都会有一个__dict__属性(除非类中添加了__slots__属性),它是一个dict类型,
存储的是类或类实例中有效的属性。
 
2、Json反序列化为类对象
json串反序列化成类对象或类的实例,使用的是loads()方法中的object_hook参数来实现。
json.loads(data,object_hook=jsonToClass)
 
class Employee(object):
def __init__(self,name,age,sex,tel):
self.name = name
self.age = age
self.sex = sex
self.tel = tel
def objJson(self,obj_instance):
return {
'name':obj_instance.name,
'age':obj_instance.age,
'sex':obj_instance.sex,
'tel':obj_instance.tel
}
 
e1 = Employee('andy','24','male','131xxxxxxxx')
print json.dumps(e1.__dict__)
#fucn(e1)
print e1.__dict__
 
def jsonToClass(dictVar):
return Employee(dictVar['name'],dictVar['age'],dictVar['sex'],dictVar['tel'])
jsonDate = {"age": "24", "tel": "131xxxxxxxx", "name": "andy", "sex": "male"}
e = json.loads(jsonDate,object_hook=jsonToClass)
print e
print e.name
 
四、
Python类型                 JSON字符串类型
dict                             object
list, tuple                    array
str, unicode               string
int, long, float            number
True                          true
False                        false
None                        null

最新文章

  1. 京东招聘Java开发人员
  2. mac下 tomcat8+jdk1.8+servlet+Spring环境搭建中的问题
  3. Unity3d5.0 新UI之2048
  4. LightOj1385 - Kingdom Division(数学几何题)
  5. 2016年12月5日 星期一 --出埃及记 Exodus 20:26
  6. zedboard如何从PL端控制DDR读写(二)——AXI总线
  7. node系列1
  8. Qt 与 JavaScript 通信
  9. Decorator学习笔记
  10. JQuery 选择器 *很重要 多记
  11. Ubuntu下将vim配置为Python IDE(转)
  12. Uva 12171 Sculpture - 离散化 + floodfill
  13. laravel 中路由的快速设置(只需一个控制器名就ok) 不用具体到方法
  14. [转] 深入理解Batch Normalization批标准化
  15. Vue+Vue-router微信分享功能
  16. [Oracle]如何取Control File 的Dump
  17. centos mysql安装 完全版
  18. centos7+hadoop完全分布式集群搭建
  19. [Windows Azure] Administering your Windows Azure AD tenant
  20. SQL 计算某月有多少天

热门文章

  1. Nginx一直报504超时,配置相关参数好了
  2. WPF中使用第三方字体选择器
  3. Android开发——View绘制过程源码解析(一)
  4. 1754-I Hate It 线段树(单点替换,区间最值)
  5. jq 一个强悍的json格式化查看工具
  6. https 通信流程和Charles 抓包原理
  7. Percona-Tookit工具包之pt-find
  8. 虚拟现实-VR-UE4-构建光照显示光照构建失败,Swarm启动失败
  9. 8.0 TochAction各种用法
  10. Linux系统安装jdk后出现无法执行binary 文件的错误解决