详解Python使用simplejson模块解析JSON的方法

作者: 韦德国际1946手机版  发布:2019-05-28

一,Json模块介绍 JSON(JavaScript Object Notation) 是一种轻量级的数据沟通格式。易于人阅读和编排。同一时间也便于机器剖判和扭转。它基于JavaScript Programming Language, Standard ECMA-262 三rd 艾德ition - December 1九九8的一个子集。JSON接纳完全部独用立于言语的文本格式,不过也接纳了看似于C语言家族的习贯(包涵C, C , C#, Java, JavaScript, Perl, Python等)。这一个特色使JSON成为可以的数据调换语言。

详解Python使用simplejson模块深入分析JSON的不二等秘书诀,simplejsonjson

①,Json模块介绍 JSON(JavaScript Object Notation) 是1种轻量级的数据沟通格式。易于人阅读和编写制定。同期也轻松机器分析和转移。它基于JavaScript Programming Language, Standard ECMA-26二 叁rd 艾德ition - December 一9玖6的二个子集。JSON选用完全部独用立于言语的文本格式,可是也应用了近乎于C语言家族的习于旧贯(包含C, C , C#, Java, JavaScript, Perl, Python等)。那一个特征使JSON成为美好的数据沟通语言。

2,Json的格式
2.1,对象:

{name:"Peggy",email:"[email protected]",homepage:"http://www.bkjia.com"} 
{ 属性 : 值 , 属性 : 值 , 属性 : 值 } 

2.2,数组: 是有各种的值的联谊。2个数组伊始于"[",结束于"]",值时期用","分隔。

[ 
{name:"Peggy",email:"[email protected]",homepage:"http://www.bkjia.com"}, {name:"Peggy",email:"[email protected]",homepage:"http://www.bkjia.com"}, 
{name:"Peggy",email:"[email protected]",homepage:"http://www.bkjia.com"} 
] 

另,值能够是字符串、数字、true、false、null,也得以是目的或数组。那个组织都能嵌套。

叁,Json的导入导出 那边的write/dump的意义是将Json对象输入到一个python_object中,如果python_object是文本,则dump到文件中;假诺是指标,则dump到内存中。那是种类化。

3.1,读取Json文件

import simplejson as json 
f = file('table.json') 
source = f.read() 
target = json.JSONDecoder().decode(source) 
print target 

import simplejson as json 
jsonobject = json.load(file('table.json')) 
print jsonobject 

3.2,显示Json文件 为了体现Json格式美观,原本的Json文件:

[[email protected]]$python readJson.py 
[{'Query': 'desc zt1;', 'Message': '{"DescibeTableWithPartSpec": "false", "GetTableMetaString":"{\"tableName\":\"zt1\",\"owner\":\"1365937150772213\",\"createTime\":1346218114,\"lastModifiedTime\":0,\"columns\":[{\"name\":\"a\",\"type\":\"string\"},{\"name\":\"b\",\"type\":\"string\"}],\"partitionKeys\":[{\"name\":\"pt\",\"type\":\"string\"}]}"}', 'QueryID': '', 'Result': 'OK'}] 

试行文书:

import simplejson as json 
jsonobject = json.load(file('table.json')) 
print json.dumps(jsonobject,sort_keys=True,indent=4) 

显示:

[[email protected]]$python readJson.py 
[ 
  { 
    "Message": "{"DescibeTableWithPartSpec": "false", "GetTableMetaString":"{\"tableName\":\"zt1\",\"owner\":\"1365937150772213\",\"createTime\":1346218114,\"lastModifiedTime\":0,\"columns\":[{\"name\":\"a\",\"type\":\"string\"},{\"name\":\"b\",\"type\":\"string\"}],\"partitionKeys\":[{\"name\":\"pt\",\"type\":\"string\"}]}"}", 
    "Query": "desc zt1;", 
    "QueryID": "", 
    "Result": "OK" 
  } 
] 

三.3,json模块示例:

import json 
# Converting Python to JSON 
json_object = json.write( python_object ) 
# Converting JSON to Python 
python_object = json.read( json_object ) 

3.4,simplejson模块 示例:

import simplejson 
# Converting Python to JSON 
json_object = simplejson.dumps( python_object ) 
# Converting JSON to Python 
python_object = simplejson.loads( json_object ) 

其中的json_object也足以是文本名比方file(“tmp/table.json”)

四,Json数据的辨析 如果对于data.json文件如下:

复制代码 代码如下:

{'isSuccess': True, 'errorMsg': '', 'total': 1, 'data': [{'isOnline': True, 'idc': 'xe6x9dxadxe5xb7x9exe5xbexb7xe8x83x9cxe6x9c详解Python使用simplejson模块解析JSON的方法。xbaxe6x88xbf', 'assetsNum': 'B50070100007003', 'responsibilityPerson': 'xe5xbcxa0xe4xb9x8bxe8xafx9a', 'deviceModel': 'PowerEdge 1950', 'serviceTag': '729HH2X', 'ip': '172.16.20.163', 'hostname': 'hzshterm1.alibaba.com', 'manageIp': '172.31.58.223', 'cabinet': 'H05', 'buyTime': '2009-06-29', 'useState': 'xe4xbdxbfxe7x94xa8xe4xb8xad', 'memoryInfo': {'amount': 4, 'size': 8192}, 'cpuInfo': {'coreNum': 8, 'l2CacheSize': 6144, 'amount': 2, 'model': 'Intel(R) Xeon(R) CPU           E5405  @ 2.00GHz', 'masterFrequency': 1995}, 'cabinetPositionNum': '', 'outGuaranteeTime': '', 'logicSite': 'xe4xb8xadxe6x96x87xe7xabx99'}]} 
首初阶入该文件,创设Json对象,并查看类型,已经是dict类型了。

#test.py 
import simplejson as json 
ddata = json.loads(file("data.json")) 
print ddata 
print type(ddata)#<type 'dict'> 

说不上,大家以读字典中key 为”data”对应的键值

>>> ddata['data']  //查看字典的方法!

>>>type(ddata['data']) 
<type 'list'> 

发现ddata[‘data']是2个列表,列表将要用序号来询问

>>> ddata['data'][0]     //查看列表的方法!

>>> type(ddata['data'][0]) 
<type 'dict'> 

ddata[‘data']列表的0号成分是个字典。。
好,那大家检查key为idc的键值是有一点点

>>> ddata['data'][0]['idc']     //查看字典的方法!

>>> ddata['data'][0]['idc']     //查看字典的方法! 
'xe6x9dxadxe5xb7x9exe5xbexb7xe8x83x9cxe6x9cxbaxe6x88xbf' 
>>> print ddata['data'][0]['idc'] 
杭州德胜机房  

5.局地属性研讨

简短测试了弹指间,要是用JSON,也正是python二.陆上述自带的json管理库,效用还算能够:
一K的数额,二.九GHz的CPU,单核下每秒能dump:368九五回。差不离是pyamf的伍倍。但数据量异常的大,约为pyamf的1.67倍(1十四分一5陆)。

start_time: 1370747463.77
loop_num: 36898
end_time:  1370747464.78

 
再看看simplejson,未有安装C扩张的景况下:

图片 1

simplejson,未有安装C扩充,跑出的结果让小编惊呆:

start_time: 1370748132.87
loop_num: 1361
end_time:  1370748133.88

频率如此之低下。
 
下边是测试代码:

#! /usr/bin/env python 
#coding=utf-8 

import time 
import json 

test_data = { 
  'baihe': { 
    'name': unicode('百合', 'utf-8'),    
    'say': unicode('清新,淡雅,花香', 'utf-8'),    
    'grow_time': 0.5,     
    'fruit_time': 0.5,    
    'super_time': 0.5,    
    'total_time': 1,   
    'buy':{'gold':2, } ,    
    'harvest_fruit': 1,   
    'harvest_super': 1,   
    'sale': 1,      
    'level_need': 0,   
    'experience' : 2,   
    'exp_fruit': 1,    
    'exp_super': 1,    
    'used': True, 
  }, 
  '1':{ 
    'interval' : 0.3,  
    'probability' : { 
      '98': {'chips' : (5, 25), }, 
      '2' : {'gem' : (1,1), }, 
    }, 
  }, 
  '2':{ 
    'unlock' : {'chips':1000, 'FC':10,}, 
    'interval' : 12,  
    'probability' : { 
      '70': {'chips' : (120, 250), }, 
      '20': {'gem' : (1,1), }, 
      '10': {'gem' : (2,2), }, 
    }, 
  }, 
  'one':{ 
    '10,5' :{'id':'m01', 'Y':1, 'msg':u'在罐子里发现了一个银币!',}, 
    '3,7' :{'id':'m02', 'Y':10,'msg':u'发现了十个银币!好大一笔钱!',}, 
    '15,5' :{'id':'m03', 'Y':2, 'msg':u'一只老鼠跑了过去',}, 
    '7,4' :{'id':'m04', 'Y':4, 'msg':u'发现了四个生锈的银币……',}, 
    '2,12' :{'id':'m05', 'Y':6, 'msg':u'六个闪亮的银币!',}, 
  },   

} 

start_time = time.time() 
print "start_time:", start_time 

j = 1 
while True: 
  j  = 1 
  a = json.dumps(test_data) 
  data_length = len(a) 
  end_time = time.time() 
  if end_time - start_time >= 1 : 
    break 
print "loop_num:", j 
print "end_time: ",end_time 
print data_length ,a 

 
总括:python自带的json,性能能够承受。simplejson,要是未有C扩张加快,成效特别低下。

为咱们介绍怎么着运用 Python 语言来编码和解码 JSON 对象。

使用Python解析JSON详解,pythonjson详解

为大家介绍怎样使用 Python 语言来编码和平解决码 JSON 对象。

JSON(JavaScript Object Notation) 是1种轻量级的数据调换格式,易于人阅读和编排。


2,Json的格式
2.1,对象:

您只怕感兴趣的篇章:

  • 让python json encode datetime类型
  • 采取Python分析JSON数据的核心方法
  • 简短介绍Python中的JSON使用
  • python读取json文件并将数据插入到mongodb的点子
  • python自动格式化json文件的秘诀
  • Python中字典和JSON互转操作实例
  • python师长字典调换来其json字符串
  • Python操作json数据的三个简便例子
  • python管理json数据中的粤语
  • python深入分析json实例方法

1,Json模块介绍 JSON(JavaScript Object Notation) 是1种轻量级的数据交换格式。易于人阅读...

JSON(JavaScript Object Notation) 是一种轻量级的数据调换格式,易于人阅读和编排。

JSON 函数

选用 JSON 函数要求导入 json 库:import json

函数 描述
json.dumps 将 Python 对象编码成 JSON 字符串
json.loads 将已编码的 JSON 字符串解码为 Python 对象

{name:"Peggy",email:"peggy@gmail.com",homepage:"//www.jb51.net"} 
{ 属性 : 值 , 属性 : 值 , 属性 : 值 } 

json.dumps

json.dumps 用于将 Python 对象编码成 JSON 字符串。

2.2,数组: 是有种种的值的成团。三个数组起始于"[",结束于"]",值时期用","分隔。

JSON 函数

应用 JSON 函数须求导入 json 库:import json

函数 描述
json.dumps 将 Python 对象编码成 JSON 字符串
json.loads 将已编码的 JSON 字符串解码为 Python 对象

语法

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)
[ 
{name:"Peggy",email:"peggy@gmail.com",homepage:"//www.jb51.net"}, {name:"Peggy",email:"peggy@gmail.com",homepage:"//www.jb51.net"}, 
{name:"Peggy",email:"peggy@gmail.com",homepage:"//www.jb51.net"} 
] 

json.dumps

json.dumps 用于将 Python 对象编码成 JSON 字符串。

实例

以下实例将数组编码为 JSON 格式数据:

#!/usr/bin/python
import json

data = [ { 'a' : 1, 'b' : 2, 'c' : 3, 'd' : 4, 'e' : 5 } ]

json = json.dumps(data)
print json

如上代码实行结果为:

[{"a": 1, "c": 3, "b": 2, "e": 5, "d": 4}]

选取参数让 JSON 数据格式化输出:

>>> import json
>>> print json.dumps({'a': 'Runoob', 'b': 7}, sort_keys=True, indent=4, separators=(',', ': '))
{
    "a": "Runoob",
    "b": 7
}

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

Python JSON
dict object
list, tuple array
str, unicode string
int, long, float number
True true
False false
None null

另,值可以是字符串、数字、true、false、null,也能够是目的或数组。那么些构造都能嵌套。

语法

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)

json.loads

json.loads 用于解码 JSON 数据。该函数再次来到 Python 字段的数据类型。

三,Json的导入导出 那边的write/dump的意义是将Json对象输入到一个python_object中,如果python_object是文本,则dump到文件中;如若是指标,则dump到内存中。那是种类化。

实例

以下实例将数组编码为 JSON 格式数据:

#!/usr/bin/python
import json

data = [ { 'a' : 1, 'b' : 2, 'c' : 3, 'd' : 4, 'e' : 5 } ]

json = json.dumps(data)
print json

以上代码实行结果为:

[{"a": 1, "c": 3, "b": 2, "e": 5, "d": 4}]

行使参数让 JSON 数据格式化输出:

>>> import json
>>> print json.dumps({'a': 'Runoob', 'b': 7}, sort_keys=True, indent=4, separators=(',', ': '))
{
    "a": "Runoob",
    "b": 7
}

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

Python JSON
dict object
list, tuple array
str, unicode string
int, long, float number
True true
False false
None null

语法

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

3.1,读取Json文件

json.loads

json.loads 用于解码 JSON 数据。该函数再次回到 Python 字段的数据类型。

实例

以下实例体现了Python 怎样解码 JSON 对象:

#!/usr/bin/python
import json

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

text = json.loads(jsonData)
print text

以上代码施行结果为:

{u'a': 1, u'c': 3, u'b': 2, u'e': 5, u'd': 4}

json 类型调换来 python 的项目对照表:

JSON Python
object dict
array list
string unicode
number (int) int, long
number (real) float
true True
false False
null None

 


import simplejson as json 
f = file('table.json') 
source = f.read() 
target = json.JSONDecoder().decode(source) 
print target 

import simplejson as json 
jsonobject = json.load(file('table.json')) 
print jsonobject 

语法

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

选用第二方库:Demjson

德姆json 是 python 的第一方模块库,可用以编码和解码 JSON 数据,包含了 JSONLint 的格式化及校验功效。

Github 地址:

官方地址:

3.2,显示Json文件 为了显得Json格式赏心悦目,原来的Json文件:

实例

以下实例浮现了Python 怎么着解码 JSON 对象:

#!/usr/bin/python
import json

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

text = json.loads(jsonData)
print text

以上代码实践结果为:

{u'a': 1, u'c': 3, u'b': 2, u'e': 5, u'd': 4}

json 类型转变来 python 的项目对照表:

JSON Python
object dict
array list
string unicode
number (int) int, long
number (real) float
true True
false False
null None

 


条件安插

在使用 德姆json 编码或解码 JSON 数据前,大家需求先安装 德姆json 模块。本课程我们会下载 德姆json 并安装:

$ tar -xvzf demjson-2.2.3.tar.gz
$ cd demjson-2.2.3
$ python setup.py install

越多设置介绍查看:

[admin@r42h06016.xy2.aliyun.com]$python readJson.py 
[{'Query': 'desc zt1;', 'Message': '{"DescibeTableWithPartSpec": "false", "GetTableMetaString":"{\"tableName\":\"zt1\",\"owner\":\"1365937150772213\",\"createTime\":1346218114,\"lastModifiedTime\":0,\"columns\":[{\"name\":\"a\",\"type\":\"string\"},{\"name\":\"b\",\"type\":\"string\"}],\"partitionKeys\":[{\"name\":\"pt\",\"type\":\"string\"}]}"}', 'QueryID': '', 'Result': 'OK'}] 

动用第1方库:德姆json

Demjson 是 python 的第一方模块库,可用以编码和解码 JSON 数据,包括了 JSONLint 的格式化及校验成效。

Github 地址:

官方地址:

JSON 函数

函数 描述
encode 将 Python 对象编码成 JSON 字符串
decode 将已编码的 JSON 字符串解码为 Python 对象

本文由韦德国际1946发布于韦德国际1946手机版,转载请注明出处:详解Python使用simplejson模块解析JSON的方法

关键词: python json