Python解析json資料結構範例
from:http://bkeep.blog.163.com/blog/static/12341429020113156582685/
一、JSON的格式:
1,物件:
{name:"Peggy",email:"[email protected]",homepage:"http://www.peggy.com"}
{ 屬性 : 值 , 屬性 : 值 , 屬性 : 值 }
2,陣列是有順序的值的集合。一個數組開始於"[",結束於"]",值之間用","分隔。
[
{name:"Peggy",email:"[email protected]",homepage:"http://www.peggy.com"}, {name:"Peggy",email:"
{name:"Peggy",email:"[email protected]",homepage:"http://www.peggy.com"}
]
3, 值可以是字串、數字、true、false、null,也可以是物件或陣列。這些結構都能巢狀。
4,json示例:
import json
# Converting Python to JSON
json_object = json.write( python_object )
#注:read/write是json-py.py和minijson.py的方法,而python2.6開始自帶的lib庫裡用的是simplejson.py,其沒有read/write方法,而是load/loads/dump/dumps
# Converting JSON to Python
python_object = json.read( json_object )
5,simplejson 示例:
import simplejson
# Converting Python to JSON
json_object = simplejson.dumps( python_object )
# Converting JSON to Python
python_object = simplejson.loads( json_object )
二、python從web介面上查詢資訊
1,先看個例子
>>> import urllib
>>> url='http://a.bkeep.com/page/api/saInterface/searchServerInfo.htm?serviceTag=729HH2X'
>>> page=urllib.urlopen(url)
>>> data=page.read()
>>> print data //這個就是json的資料結構,str型別
{"total":1,"data":[{"outGuaranteeTime":"","assetsNum":"B50070100007003","cabinet":"H05","deviceModel":"PowerEdge 1950","hostname":"hzshterm1.alibaba.com","logicSite":"中文站","memoryInfo":{"amount":4,"size":8192},"ip":"172.16.20.163","isOnline":true,"useState":"使用中","serviceTag":"729HH2X","cpuInfo":{"amount":2,"masterFrequency":1995,"model":"Intel(R) Xeon(R) CPU E5405 @ 2.00GHz","coreNum":8,"l2CacheSize":6144},"cabinetPositionNum":"","buyTime":"2009-06-29","manageIp":"172.31.58.223","idc":"杭州德勝機房","responsibilityPerson":"張之誠"}],"errorMsg":"","isSuccess":true}
>>> type(data)
<type 'str'>
2,有了json資料結構,我卻不知道怎麼把它解析出來,幸虧有了李建輝的指導。大概思路是:
首先,json基本上是key/value的,python中就叫字典。既然是字典,那就應該安照讀字典的方式去讀。
將上面的data轉為字典型別,這裡用json模組的read方法。
>>> import json
>>> ddata=json.read(data)
>>> ddata
{'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'}]}
>>>
看看ddata已經是dict型別了
>>> type(ddata)
<type 'dict'>
其次,我們以讀字典中key為”data”對應的鍵值
>>> ddata['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'}]
>>>type(ddata[‘data’])
<type 'list'>
發現ddata[‘data’]是一個列表,列表就要用序號來查詢
>>> ddata['data'][0] //檢視列表的方法!
{'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'}
>>>
呵呵,ddata[‘data’]列表的0號元素是個字典。。
好,那我們查查key為idc的鍵值是多少
>>> 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]['idc'] //呵呵,為什麼print搞出來的是漢字呢?
杭州德勝機房
看到這裡終於明白怎麼解析json資料結構了。。。
那就是”一層一層往下剝”
-------------------------------------------------------------------------------
#! /usr/bin/env python
#coding=utf-8
import json
s = '[{"name":"鳥巢","point":{"lat":"39.990","lng":"116.397"},"desc":"奧運會主場地"},{"name":"北大乒乓球館","point":{"lat":"39.988","lng":"116.315"},"desc":"乒乓球比賽場地"},{"name":"北京工人體育場","point": {"lat":"39.930","lng":"116.446"},"desc":"足球比賽場地"}]'
locations = json.read(s)
#注:read是json-py.py和minijson.py的方法,而python2.6開始自帶的lib庫裡用的是simplejson.py,其沒有read方法,而是load/loads
print str(len(locations))
for location in locations:
print location["name"]
print location["point"]["lat"]
-------------------------------------------------------------------------------
#!/usr/local/bin/python
#coding = utf-8
import os
import json Res='[{"brief":"ooooo","class_extid":13,"create_time":1131783174,"face_id":4,"flag":6777217,"flag_ext":0,"level":0,"max_member":100,"memo":"[email protected]~B","name":"10502","option":2,"ul":[{"flag":4,"u":285},{"flag":4,"u":35}]}]'
qDic = json.loads(Res)
for i in qDic:
print i["class_extid"]
for j in i["ul"]:
print str(j["flag"]) + "===" + str(j["u"])
=================================================================================
# python t4.sh
13
4===285
4===35
#
PS:更多範例請參考
相關推薦
Python解析json資料結構範例
from:http://bkeep.blog.163.com/blog/static/12341429020113156582685/ 一、JSON的格式: 1,物件: {name:"Peggy",email:"[email protected]",homepage:"http://www
python解析JSON數據結構
rip ava json數據結構 括號 面向對象 鍵值 json style spa 1 對象: 對象在js中表示為”{}”括起來的內容,數據結構為{key:value, key:value…}的鍵值對結構,在面向對象的語言中,key為對象的屬性,value為對應屬性的值,
python解析json格式的天氣資料
備註:使用eval()轉換為字典,提取字典中的元素。 import requests import json url = 'http://wthrcdn.etouch.cn/weather_mini
python解析json
size class bsp 解析json gbk turn python 模式 pytho 創建json文件 { "fontFamily": "微軟雅黑", "fontSize": 12, "BaseSettings":{ "font":1
高階Python----常用的資料結構與演算法
前言 高階Python系列文章是筆者想要突破自己目前的技術生涯瓶頸而作,不具有普適性。本文主要是介紹Python在資料結構和演算法中常用的函式。這也是資料分析領域必備知識點。 也不是特地為了某些讀者而作,想著提高自己的同時,能方便他人就更好了。懂分享的人,一定會快樂!
c語言建立和解析json資料
之前一篇有說到使用lincurl庫獲取網頁資料,那麼問題來了,當我們獲取到的資料大多是json的格式,應該怎麼解析出我們需要的欄位呢?下面我們使用json-glib庫來對json資料進行建立和解析。 #include<json-glib/json-glib.h> #include
ajax中解析json資料的方式
eval(); //此方法不推薦 JSON.parse(); //推薦方法 一、兩種方法的區別 我們先初始化一個json格式的物件: var jsonDate = '{ "name":"周星馳","age":23 }' var
Gson解析json資料
簡介: Json資料是類似xml型別的資料轉化格式但是它的傳輸速率遠遠高於xml的解析速率。 這裡簡單的對用gson解析json格式的資料,為什麼說是簡單的介紹呢,因為博主有更簡單的解析方式後期會進行推出或者掃描頭像進 行私聊(公眾號)。 進行整合: 這裡按照a
【12】python 棧型資料結構模擬、佇列型資料結構模擬
一、壓棧操作模擬 #__author:"吉*佳" #date: 2018/10/21 0021 #function:棧 # 棧:即是先進後出的一種資料結構 # (1)模擬壓棧操作 stack=[] flag=True while flag: temp = input("請輸入壓棧元素[
後臺返回json資料給前臺和前臺解析json資料
後臺返回json資料和前臺解析json資料 一般來說web開發中,前臺採用json資料提交給後臺,後臺處理資料以後返回json資料給前臺,前臺解析json,顯示資料。 總而言之,前後臺直接交換的資料格式最常用的非json資料無疑了。 這裡就總結一些json資料的前後臺處理方式。
Python基礎【資料結構:列表 | 元組 | 集合 | 字典】
序列 序列是Python中最基本的資料結構。包括字串,列表,元組,Unicode字串,buffer物件,xrange物件。序列中的每個元素都分配一個數字,即它的索引第一個索引是0,第二個索引是1,依此類推。 列表和元組 列表一個方括號內的逗號分隔值列表中可以存放不同的資料型別。
xml之SAX解析以及資料結構存入java物件
引用來自於:https://www.cnblogs.com/Qian123/p/5231303.html https://blog.csdn.net/qq_36935755/article/details/77106322?utm_source=copy
python - 內建資料結構總結
python資料型別: 數值型別 bool布林型別 str字串型別 list列表型別 tuple元組型別 set集合型別 dict字典型別 可變資料型別 不可變資料型別: 1.可變資料型別:list set dict(是否可以增刪改查) 2.不可變資料型別:數值 bool str tup
python 批量JSON資料,插入資料庫
newList=[{"link":"https://www.1.com/","ga_tag":"xvideos","image":"http://static.2.mobi/views/images/xvideos.png?x-oss-process=style/120"},{"link":"htt
QT使用QJson生成解析Json資料的方法
QT中使用json還是比較方便的,下面用例子直接說明 舉例子之前首先推薦一個線上解析json格式的網站,具體格式用法如下圖所示: 之後根據這個格式進行json資料解析。 QT使用json需要包含的標頭檔案 #include<qjsondocument.h> #include<qj
android 快速解析json資料搭配Gson庫中Android Studio外掛 GsonFormat
轉:https://www.jianshu.com/p/d34c5e7c8227 更簡潔的文章:http://www.cnblogs.com/foxy/p/7825380.html 如果對json解析資料還不清楚的可以看一下我的例子:ExpandableListView+SQLite+Jso
【我的Android進階之旅】關於解析json資料中自帶轉義符號的正確操作
一、問題描述 在實現一個功能的時候,需要伺服器以json格式返回一段功能配置,比如如下所示的json配置。 1.1 我希望的json格式 { "k": "ClientFilterTrace_android", "isVisible": true
python演算法與資料結構013--二叉樹的實現及按先序,後序,中序遍歷的遞迴實現
二叉樹的深度優先遍歷: (可以用遞迴或者堆疊實現) 先序:根節點->左子樹->右子樹 中序: 左子樹->根節點->右子樹 後序:左子樹->右子樹->根節點 二叉樹按廣度優先遍歷:從上到下,從左到右遍歷按層次遍歷(利用佇列實現) cl
vb6裡解析json資料
vb6裡不支援json物件,這裡使用通過引用js來實現json的解析 獲取簡單的json串裡的值 Dim ScriptObj As Object Dim JsonStr As String JsonSt
python內建資料結構heapq【以後補充&修正】
heapq 最小堆 heapq.heapify()將列表原地轉換為堆。 sort()區別在於heap採用的是堆排序演算法,sort採用的是歸併排序演算法。 堆(heap)是一個樹形資料結構,其中子節點與父節點是一種有序關係。 二叉堆(Binary heap)可以使用以