一、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

Python之json编码的更多相关文章

  1. Python 语言来编码和解码 JSON 对象

    Json函数: json.dumps: Python标准库中的json模块,集成了将数据序列化处理的功能. 将 Python 对象编码成 JSON 字符串 语法: json.dumps(obj, sk ...

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

    JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式.易于人阅读和编写.同时也易于机器解析和生成.它基于JavaScript Programming Langu ...

  3. 使用Python解析JSON数据的基本方法

    这篇文章主要介绍了使用Python解析JSON数据的基本方法,是Python入门学习中的基础知识,需要的朋友可以参考下:     ----------------------------------- ...

  4. python 序列化 json pickle

    python的pickle模块实现了基本的数据序列和反序列化.通过pickle模块的序列化操作我们能够将程序中运行的对象信息保存到文件中去,永久存储:通过pickle模块的反序列化操作,我们能够从文件 ...

  5. Json概述以及python对json的相关操作(转)

    什么是json: JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式.易于人阅读和编写.同时也易于机器解析和生成.它基于JavaScript Programm ...

  6. python的json模块

    Python JSON 本章节我们将为大家介绍如何使用 Python 语言来编码和解码 JSON 对象. 环境配置 在使用 Python 编码或解码 JSON 数据前,我们需要先安装 JSON 模块. ...

  7. python解析json

    JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式. 引用 import json 编码:把一个Python对象编码转换成Json字符串 json.dumps ...

  8. python 解析json loads dumps

    认识 引用模块 重要函数 案例 排序 缩进参数 压缩 参考 认识 JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式.它基于JavaScript(Standa ...

  9. python 操作json

    认识 JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式.它基于JavaScript(Standard ECMA-262 3rd Edition - Dece ...

随机推荐

  1. 004---Linux系统设置

    Linux版本相关命令 查看系统版本:cat /etc/redhat-release 查看系统内核版本以及位数:uname -r [root@hostname1 ~]# cat /etc/redhat ...

  2. 查询各科成绩最高和最低的分:以如下形式显示:课程ID,最高分,最低分

    SELECT L.C# As 课程ID,L.score AS 最高分,R.score AS 最低分 FROM SC L ,SC AS R WHERE L.C# = R.C# and L.score = ...

  3. python2.7练习小例子(二十九)

        29):1.题目:按相反的顺序输出列表的值. #!/usr/bin/python # -*- coding: UTF-8 -*- a = ['one', 'two', 'three'] for ...

  4. set<pair<int,int> > 的运用

    In this cafeteria, the N tables are all ordered in one line, where table number 1 is the closest to ...

  5. VS2017发布微服务到docker

    1.本文档以eShopOnContainers.sevices.identity为描述对象,并包含docker for windows的部分配置流程. 2.前置环境:win10操作系统.安装VS201 ...

  6. struts2官方 中文教程 系列十三:利用通配符选择方法

    介绍 在本教程中,我们将介绍如何在struts.xml中配置action节点以达到仅使用一个action节点将几个不同的url关联到特定action类的特定方法.这样做的目的是减少struts.xml ...

  7. PADS9.5的常用菜单栏

    1. PAD9.5常用的2个菜单是布线工具和选择过滤工具. 2. 布线工具菜单,如下图,依次是选择,移动,复制,删除,添加元件,布线,新建层次化符号,交换参考编号,交换引脚,添加总线,分割总线,延伸总 ...

  8. IOException: win32 io returned 267. Path:

    unity3d在导出android项目时出现了这个错误,找了一圈也没找到原因,最后把项目名中空格去掉后OK了,坑啊!!!!

  9. 一款代码高亮插件 -- SyntaxHighlighter

    SyntaxHighlighter 是当前用得最多的一款代码高亮插件,包括本博客也用到了该插件来显示代码,大家可以看到效果了.只不过这是针对WordPress的一款代码高亮插件,而今天我要给大家介绍的 ...

  10. 局部敏感哈希LSH

    之前介绍了Annoy,Annoy是一种高维空间寻找近似最近邻的算法(ANN)的一种,接下来再讨论一种ANN算法,LSH局部敏感哈希. LSH的基本思想是: 原始空间中相邻的数据点通过映射或投影变换后, ...