Python之json编码

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

时间: 2024-08-01 12:39:03

Python之json编码的相关文章

python中json.dumps使用的坑以及字符编码

我们知道,python中的字符串分普通字符串和unicode字符串,一般从数据库中读取的字符串会自动被转换为unicode字符串 下面回到重点,使用json.dumps时,一般的用法为: >>> obj={"name":"测试"} >>> json.dumps(obj)'{"name": "\\u6d4b\\u8bd5"}' >>> print json.dumps(obj

python 序列化 json pickle

python的pickle模块实现了基本的数据序列和反序列化.通过pickle模块的序列化操作我们能够将程序中运行的对象信息保存到文件中去,永久存储:通过pickle模块的反序列化操作,我们能够从文件中创建上一次程序保存的对象. 基本接口: pickle.dump(obj, file, [,protocol]) 注解:将对象obj保存到文件file中去. protocol为序列化使用的协议版本,0:ASCII协议,所序列化的对象使用可打印的ASCII码表示:1:老式的二进制协议:2:2.3版本引

python解析json文件

概念 序列化(Serialization):将对象的状态信息转换为可以存储或可以通过网络传输的过程,传输的格式可以是JSON.XML等.反序列化就是从存储区域(JSON,XML)读取反序列化对象的状态,重新创建该对象. JSON(JavaScript Object Notation):一种轻量级数据交换格式,相对于XML而言更简单,也易于阅读和编写,机器也方便解析和生成,Json是JavaScript中的一个子集. Python2.6开始加入了JSON模块,无需另外下载,Python的Json模

python对json的相关操作以及json模块的简要分析

JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式.易于人阅读和编写.同时也易于机器解析和生成. JSON有两种结构: 第一种就是"名称/值"对的集合.在python中相当于字典类型,在其他语言中,它被理解为对象(object),纪录(record),结构(struct),字典(dictionary),哈希表(hash table),有键列表(keyed list),或者关联数组 (associative array). 第二种就是值的有序列表

Python下Json和Msgpack序列化比较

Python下Json和Msgpack序列化比较  最近用Python时,遇到了序列化对象的问题,传统的json和新型序列化工具包msgpack都有涉及,于是做一个简单的总结: 通俗的讲:序列化:将对象信息转化为可以存储或传输的形式:反序列化:把这个存储的内容还原成对象. json就不用多做解释了,是一种轻量级的数据交换格式,广泛应用于web开发中.当然也是将对象序列化成符合json规范的格式.网上有一堆堆资料. 官网:http://www.json.org msgpack就有意思了,先看下官方

python 解析json

一.概念 序列化(Serialization):将对象的状态信息转换为可以存储或可以通过网络传输的过程,传输的格式可以是JSON.XML等.反序列化就是从存储区域(JSON,XML)读取反序列化对象的状态,重新创建该对象. JSON(JavaScript Object Notation):一种轻量级数据交换格式,相对于XML而言更简单,也易于阅读和编写,机器也方便解析和生成,Json是JavaScript中的一个子集. Python2.6开始加入了JSON模块,无需另外下载,Python的Jso

[转]python对json的相关操作

json官方说明参见:http://json.org/ Python操作json的标准api库参考:http://docs.python.org/library/json.html 对简单数据类型的encoding 和 decoding: 使用简单的json.dumps方法对简单数据类型进行编码,例如: 1 2 3 4 5 6 import json obj = [[1,2,3],123,123.123,'abc',{'key1':(1,2,3),'key2':(4,5,6)}] encoded

python操作json

概念 序列化(Serialization):将对象的状态信息转换为可以存储或可以通过网络传输的过程,传输的格式可以是JSON.XML等.反序列化就是从存储区域(JSON,XML)读取反序列化对象的状态,重新创建该对象. JSON(JavaScript Object Notation):一种轻量级数据交换格式,相对于XML而言更简单,也易于阅读和编写,机器也方便解析和生成,Json是JavaScript中的一个子集. Python2.6开始加入了JSON模块,无需另外下载,Python的Json模

python解析json

认识 JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式.它基于JavaScript(Standard ECMA-262 3rd Edition - December 1999)的一个子集. JSON采用完全独立于语言的文本格式,但是也使用了类似于C语言家族的习惯(包括C, C++, C#, Java, JavaScript, Perl, Python等).这些特性使JSON成为理想的数据交换语言.易于人阅读和编写,同时也易于机器解析和生成. 引用模块