码迷,mamicode.com
首页 > 编程语言 > 详细

python-Json模块

时间:2014-10-29 12:31:22      阅读:199      评论:0      收藏:0      [点我收藏+]

标签:des   style   blog   http   io   color   os   ar   使用   

1,Json模块介绍
JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式。易于人阅读和编写。同时也易于机器解析和生成。它基于JavaScript Programming Language, Standard ECMA-262 3rd Edition - December 1999的一个子集。JSON采用完全独立于语言的文本格式,但是也使用了类似于C语言家族的习惯(包括C, C++, C#, Java, JavaScript, Perl, Python等)。这些特性使JSON成为理想的数据交换语言。
2,Json的格式
2.1,对象:
[plain] view plaincopy 
{name:"Peggy",email:"peggy@gmail.com",homepage:"http://www.peggy.com"}  
{ 属性 : 值 , 属性 : 值 , 属性 : 值 }  
2.2,数组:
是有顺序的值的集合。一个数组开始于"[",结束于"]",值之间用","分隔。
[plain] view plaincopy 
[  
{name:"Peggy",email:"peggy@gmail.com",homepage:"http://www.peggy.com"}, {name:"Peggy",email:"peggy@gmail.com",homepage:"http://www.peggy.com"},  
{name:"Peggy",email:"peggy@gmail.com",homepage:"http://www.peggy.com"}  
]  
另,值可以是字符串、数字、true、false、null,也可以是对象或数组。这些结构都能嵌套。
3,Json的导入导出
这里的write/dump的含义是将Json对象输入到一个python_object中,如果python_object是文件,则dump到文件中;如果是对象,则dump到内存中。这是序列化。

3.1,读取Json文件
[python] view plaincopy 
import simplejson as json  
f = file(table.json)  
source = f.read()  
target = json.JSONDecoder().decode(source)  
print target  
[python] view plaincopy 
import simplejson as json  
jsonobject = json.load(file(table.json))  
print jsonobject  

3.2,显示Json文件
为了显示Json格式好看,原来的Json文件:

[python] view plaincopy 
[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}]  
执行文件:
[python] view plaincopy 
import simplejson as json  
jsonobject = json.load(file(table.json))  
print json.dumps(jsonobject,sort_keys=True,indent=4)  
显示:
[python] view plaincopy 
[admin@r42h06016.xy2.aliyun.com]$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.3,json模块示例:
[python] view plaincopy 
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模块 示例:
[python] view plaincopy 
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”)

4,Json数据的解析
假设对于data.json文件如下:

[plain] view plaincopy 
{isSuccess: True, errorMsg: ‘‘, total: 1, data: [{isOnline: True, idc: \xe6\x9d\xad\xe5\xb7\x9e\xe5\xbe\xb7\xe8\x83\x9c\xe6\x9c\xba\xe6\x88\xbf, assetsNum: B50070100007003, responsibilityPerson: \xe5\xbc\xa0\xe4\xb9\x8b\xe8\xaf\x9a, 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: \xe4\xbd\xbf\xe7\x94\xa8\xe4\xb8\xad, 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: \xe4\xb8\xad\xe6\x96\x87\xe7\xab\x99}]}  
首先导入该文件,建立Json对象,并查看类型,已经是dict类型了。
[python] view plaincopy 
#test.py  
import simplejson as json  
ddata = json.loads(file("data.json"))  
print ddata  
print type(ddata)#<type ‘dict‘>  
其次,我们以读字典中key 为”data”对应的键值
>>> ddata[data]    //查看字典的方法!
[python] view plaincopy 
>>>type(ddata[data])  
<type list>  
发现ddata[‘data’]是一个列表,列表就要用序号来查询
>>> ddata[data][0]         //查看列表的方法!
[python] view plaincopy 
>>> type(ddata[data][0])  
<type dict>  

ddata[‘data’]列表的0号元素是个字典。。
好,那我们查查key为idc的键值是多少
>>> ddata[data][0][idc]          //查看字典的方法!
[python] view plaincopy 
>>> ddata[data][0][idc]          //查看字典的方法!  
\xe6\x9d\xad\xe5\xb7\x9e\xe5\xbe\xb7\xe8\x83\x9c\xe6\x9c\xba\xe6\x88\xbf  
>>> print ddata[data][0][id

 

python-Json模块

标签:des   style   blog   http   io   color   os   ar   使用   

原文地址:http://www.cnblogs.com/fly-xiang-zhao/p/4058985.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!