pythonjson多層
1. python 多層嵌套的json內容 怎麼獲取
可以首先使用json包的loads函數對json數據進行解析,然後就可以像操作Python數據格式一樣對數據進行索引和遍歷了。
import json
s = '{"aescCityList":null,"cityAllList":null,"cityJsonArray"...'
data = json.loads(s)
for city in data["cityJsonArray"]:
if city["cityId"] == 4:
print city
2. 怎樣用python解析json
>>>importjson
>>>data={"spam":"foo","parrot":42}
>>>in_json=json.mps(data)#Encodethedata
>>>in_json
'{"parrot":42,"spam":"foo"}'
>>>json.loads(in_json)#DecodeintoaPythonobject
{"spam":"foo","parrot":42}
3. 請教一個關於python處理json的問題
{
data : {
{
tg_i":" 1080723 ",
contest_i" : "1001",
sid : "1567515287"
},
{
tg_id : "1080723",
contest_id : "1001",
sid : "1567515287"
}
},
total : "2"
}
然後經過修改,變成:
?
1
{"data":{{"tg_i":"1080723","contest_i":"1001","sid":"1567515287"},{"tg_id":"1080723","contest_id":"1001","sid":"1567515287"}},"total":"2"}
格式化為:
?
1
2
3
4
5
6
7
8
9
10
11
12
13
{
"data" : { {
"tg_i" : "1080723",
"contest_i" : "1001",
"sid" : "1567515287"
}, {
"tg_id" : "1080723",
"contest_id" : "1001",
"sid" : "1567515287"
}
},
"total" : "2"
}
但是,去用json解析,但是出錯:
Python 2.7.3 (default, Apr 10 2012, 23:24:47) [MSC v.1500 64 bit (AMD64)] on win32
Type "right", "credits" or "license()" for more information.
>>> import json
>>> json.loads(『{"data":{{"tg_i":"1080723","contest_i":"1001","sid":"1567515287"},{"tg_id":"1080723","contest_id":"1001","sid":"1567515287"}},"total":"2"}』)
Traceback (most recent call last):
File "<pyshell#2>", line 1, in <mole>
json.loads(『{"data":{{"tg_i":"1080723","contest_i":"1001","sid":"1567515287"},{"tg_id":"1080723","contest_id":"1001","sid":"1567515287"}},"total":"2"}』)
File "D:\tmp\dev_install_root\Python27_x64\lib\json\__init__.py", line 326, in loads
return _default_decoder.decode(s)
File "D:\tmp\dev_install_root\Python27_x64\lib\json\decoder.py", line 366, in decode
obj, end = self.raw_decode(s, idx=_w(s, 0).end())
File "D:\tmp\dev_install_root\Python27_x64\lib\json\decoder.py", line 382, in raw_decode
obj, end = self.scan_once(s, idx)
ValueError: Expecting property name: line 1 column 9 (char 9)
【折騰過程】
1.剛開始,看了看:
{"data":{{"tg_i":"1080723","contest_i":"1001","sid":"1567515287"},{"tg_id":"1080723","contest_id":"1001","sid":"1567515287"}},"total":"2"}
好像也都是正常的,沒什麼錯誤。
2.後來才發現,對應著錯誤的位置:
column 9
是大括弧'{『
對應著,格式化的結果中的:
"data" : { {
中的第一個大括弧
然後才發現,原來是,data鍵的值,此處寫成用大括弧括起來的:
?
1
2
3
4
5
6
7
8
9
10
"data" : { {
"tg_i" : "1080723",
"contest_i" : "1001",
"sid" : "1567515287"
}, {
"tg_id" : "1080723",
"contest_id" : "1001",
"sid" : "1567515287"
}
},
但是,實際上,data的值,只是兩個dict,所以,應該是:
要麼改為list:
?
1
2
3
4
5
6
7
8
9
10
"data" : [{
"tg_i" : "1080723",
"contest_i" : "1001",
"sid" : "1567515287"
}, {
"tg_id" : "1080723",
"contest_id" : "1001",
"sid" : "1567515287"
}
],
要麼改為dict:
?
1
2
3
4
5
6
7
8
9
10
"data1" : {
"tg_i" : "1080723",
"contest_i" : "1001",
"sid" : "1567515287"
},
"data2" : {
"tg_id" : "1080723",
"contest_id" : "1001",
"sid" : "1567515287"
},
對應著,非格式化的內容就是:
?
1
{"data":[{"tg_i":"1080723","contest_i":"1001","sid":"1567515287"},{"tg_id":"1080723","contest_id":"1001","sid":"1567515287"}],"total":"2"}
和:
?
1
{"data1":{"tg_i":"1080723","contest_i":"1001","sid":"1567515287"}, "data2":{"tg_id":"1080723","contest_id":"1001","sid":"1567515287"},"total":"2"}
這樣才可以正常解析:
>>> json.loads(『{"data":[{"tg_i":"1080723","contest_i":"1001","sid":"1567515287"},{"tg_id":"1080723","contest_id":"1001","sid":"1567515287"}],"total":"2"}』)
{u』total』: u』2′, u』data』: [{u』sid』: u』1567515287′, u』contest_i』: u』1001′, u』tg_i』: u』1080723′}, {u』tg_id』: u』1080723′, u』contest_id』: u』1001′, u』sid』: u』1567515287′}]}
>>> json.loads(『{"data1":{"tg_i":"1080723","contest_i":"1001","sid":"1567515287"}, "data2":{"tg_id":"1080723","contest_id":"1001","sid":"1567515287"},"total":"2"}』)
{u』total』: u』2′, u』data1′: {u』sid』: u』1567515287′, u』contest_i』: u』1001′, u』tg_i』: u』1080723′}, u』data2′: {u』tg_id』: u』1080723′, u』contest_id』: u』1001′, u』sid』: u』1567515287′}}
【總結】
折騰json的話,前提要了解json的語法和規則。
其次才是用某種語言去處理json。
4. python 遞歸解析任意深度的json
一般不用 items()和[1],而是這樣訪問:
s["customerValue"]["name"]
s["contactValue"]["name"]
5. python提取json裡面多個相同key的值
1、首先我們要導入json包,新建一個對象。
6. 如何用Python解析多層嵌套的JSON
可以根據jpath解析keyword或路徑。
也可以根據實際結果進行剝洋蔥似的層層解析處理。
7. python json 內有多個json
Json簡介:Json,全名 JavaScript Object Notation,是一種輕量級的數據交換格式。Json最廣泛的應用是作為AJAX中web伺服器和客戶端的通訊的數據格式。現在也常用於http請求中,所以對json的各種學習,是自然而然的事情。Python的官網網址:
Json API 使用:python在版本2.6之前,是需要先下載包,安裝後才能使用的,有點類似現在的RF內使用SeleniumLibrary一樣。但是在2.6中,官方文檔明顯指出,「有一些重要的新的軟體包添加到了標准庫,比如multiprocessing 和json,但是跟python 3比,2.6的這些包不會引進更多的新功能。"於是安裝python2.6以上版本的童鞋,可以不需要下載json包,直接在所需的地方就import json 即可使用,在安裝目錄下的Lib 下,看到這兩個包(點進去仔細閱讀這些源碼,會有更多的收獲,)如下文所示:
8. 如何用python處理json文件
importjson,time
infos={"_id":"description","name":"python","filename":"中文","os":["abcd","hello","www"]}
infos["time"]=time.time()#動態修改json文件內容
#生成json文件
defjson_file(infos):
withopen("./static/desc.desc","w")asjsonf:
jsonf.write(json.mps(infos))
json_file(infos)#讀取json文件的內容
file_info=json.load(file("./static/desc.desc"))
printfile_info,type(file_info)
filename=file_info["filename"]
printfilename
infos=json.mps(file_info,sort_keys=True,indent=4)
printinfos,type(infos)
python使用json模塊來處理json數據
9. python json快速解析命令
json.mps 用於將 Python 對象編碼成 JSON 字元串。
json.loads 用於解碼 JSON 數據。該函數返回 Python 欄位的數據類型。
demjson.encode() 函數用於將 Python 對象編碼成 JSON 字元串。
demjson.decode() 函數解碼 JSON 數據。該函數返回 Python 欄位的數據類型。
1、以下實例將數組編碼為 JSON 格式數據:
#!/usr/bin/python
import json
data = [ { 'a' : 1, 'b' : 2, 'c' : 3, 'd' : 4, 'e' : 5 } ]
json = json.mps(data)
print json
2、以下實例展示了Python 如何解碼 JSON 對象:
#!/usr/bin/python
import json
jsonData = '{"a":1,"b":2,"c":3,"d":4,"e":5}';
text = json.loads(jsonData)
print text