Python  --  Json  数据编码及解析

Json 简单介绍

JSON: JavaScript Object Notation(JavaScript 对象表示法)

JSON 是存储和交换文本信息的语法。类似 XML。

JSON 比 XML 更小、更快,更易解析。

这个 sites 对象是包含 3 个站点记录(对象)的数组。

{"sites": [

{"name":"菜鸟教程" , "url":"www.runoob"},

{"name":"google" , "url":"www.google"},

{"name":"微博" , "url":"www.weibo"}

]

}

JSON 数字

JSON 数字可以是整型或者浮点型:

{ "age":30 }

JSON 对象

JSON 对象在大括号({})中书写:

对象可以包含多个名称/值对:

{"name":"菜鸟教程", "url":"www.runoob"}

这一点也容易理解,与这条 JavaScript 语句等价:

name= "菜鸟教程"url= "www.runoob"

JSON 数组

JSON 数组在中括号中书写:

数组可包含多个对象:

{

"sites": [

{"name":"菜鸟教程" , "url":"www.runoob"},

{"name":"google" , "url":"www.google"},

{"name":"微博" , "url":"www.weibo" }

]

}

在上面的例子中,对象 "sites" 是包含三个对象的数组。每个对象代表一条关于某个网站(name、url)的记录。

JSON 布尔值

JSON 布尔值可以是 true 或者 false:

{ "flag":true }

JSON null

JSON 可以设置 null 值:

{ "runoob":null }

JSON 使用 JavaScript 语法

因为 JSON 使用 JavaScript 语法,所以无需额外的软件就能处理 JavaScript 中的 JSON。

通过 JavaScript,您可以创建一个对象数组,并像这样进行赋值:

实例

var sites =[

{"name":"runoob" , "url":"www.runoob"},

{"name":"google" , "url":"www.google"},

{"name":"微博" , "url":"www.weibo"}

];

可以像这样访问 JavaScript 对象数组中的第一项(索引从 0 开始):

sites[0].name;

返回的内容是:

runoob

可以像这样修改数据:

sites[0].name="菜鸟教程";

使用Json库:import  json

json.dumps

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)

#indent 缩进 indent = 4 表示缩进 4个单元格#sort_keys=True 按 keys 进行排序展示#separators 分离器 separators=(',', ': '),如果已经使用了缩进,则这个可以不使用,多余了,效果一样。

json1=json.dumps(data)print json1 #[{"a": 1, "c": 3, "b": 2, "e": 5, "d": 4}]

json2= json.dumps(data,sort_keys=True)print json2 #[{"a": 1, "b": 2, "c": 3, "d": 4, "e": 5}]

json3= json.dumps(data,sort_keys=False)print json3 #[{"a": 1, "c": 3, "b": 2, "e": 5, "d": 4}]

testData=[{'name':u'周星驰','age':28}]

jsonD=json.dumps(testData)printjsonDprint json.dumps({'a': 'Runoob', 'b': 7}, sort_keys=True, indent=4, separators=(',', ':'))

#输出结果'''{

"a": "Runoob",

"b": 7

}'''

python 原始类型向 json 类型的转化对照表:

json.loads

语法

#语法#json.loads(s[, encoding[, cls[, object_hook[, parse_float[, parse_int[, parse_constant[, object_pairs_hook[, **kw]]]]]]]])

jsonData= '{"a":1,"b":2,"c":3,"d":4,"e":5}';

testD=json.loads(jsonData)print testD #{u'a': 1, u'c': 3, u'b': 2, u'e': 5, u'd': 4}

json 类型转换到 python 的类型对照表:

使用第三方库:Demjson

Demjson 是 python 的第三方模块库,可用于编码和解码 JSON 数据,包含了 JSONLint 的格式化及校验功能。

安装

方法一:

下载地址:https://pypi.python/pypi/demjson/2.2.4

切换到目录下 执行下面命令

python setup.py install

方法二:

执行命令

pip install demjson

成功后会在site-packages 新生成对应的文件及文件夹。

JSON 函数

encode

Python encode() 函数用于将 Python 对象编码成 JSON 字符串。

语法

#-*-coding:utf-8-*-#Time:2017/9/22 21:25#Author:YangYangJun

importdemjson

data= [ { 'a' : 1, 'b' : 2, 'c' : 3, 'd' : 4, 'e' : 5} ]#语法#demjson.encode(self, obj, nest_level=0)

json =demjson.encode(data)print json #[{"a":1,"b":2,"c":3,"d":4,"e":5}]

decode

Python 可以使用 demjson.decode() 函数解码 JSON 数据。该函数返回 Python 字段的数据类型。

语法

json = '{"a":1,"b":2,"c":3,"d":4,"e":5}';#语法#demjson.decode(self, txt)

text =demjson.decode(json)print text #{u'a': 1, u'c': 3, u'b': 2, u'e': 5, u'd': 4}

更多推荐

python读取json数据外面有大括号_Python -- Json 数据编码及解析