當前位置:首頁 » 編程語言 » python修改json

python修改json

發布時間: 2022-08-18 10:13:25

python json怎麼修改json數據

Json簡介:Json,全名 JavaScript Object Notation,是一種輕量級的數據交換格式。Json最廣泛的應用是作為AJAX中web伺服器和客戶端的通訊的數據格式。現在也常用於http請求中,所以對json的各種學習,是自然而然的事情。Python的官網網址:https://docs.python.org/2/library/json.html?highlight=json#mole-json

Json API 使用:python在版本2.6之前,是需要先下載包,安裝後才能使用的,有點類似現在的RF內使用SeleniumLibrary一樣。但是在2.6中,官方文檔(https://docs.python.org/2.6/whatsnew/2.6.html)明顯指出,「有一些重要的新的軟體包添加到了標准庫,比如multiprocessing 和json,但是跟python 3比,2.6的這些包不會引進更多的新功能。"於是安裝python2.6以上版本的童鞋,可以不需要下載json包,直接在所需的地方就import json 即可使用,在安裝目錄下的Lib 下,看到這兩個包(點進去仔細閱讀這些源碼,會有更多的收獲,)如下文所示:

⑵ 請教一個關於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。

⑶ 如何用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數據

⑷ python 怎麼處理json

json.mps()
該函數可以將簡單數據類型(int\float\string\tuple\list\dict\unicode)轉換成JSON格式,樣例代碼如下:
import json

src_data = {"name":"Tacey","age":13,"sex":"male","interst":("Programing","Reading")}

#print repr(src_data)
print json.mps(src_data)

輸出如下:
{'interst':('Programing','Reading'),'age':23,'name':'Tacey','sex':'male'}
{"interst":["programing","Reading"],"age":23,"name":"Tacey","sex":mal"}

2、json.loads()
該函數可以將JSON數據轉換成Python的簡單數據類型,接著上面的代碼:
json_data = json.mps(src_data)
print json.loads(json_data)["name"]

輸出結果:
Tacey

⑸ python怎麼把json文件轉換成字元串

1、說明:

json文件本身就是字元串文件,使用open函數就可以得到文件字元串內容,如果要解析文件則使用python3通過json模塊load函數來實現。
2、代碼示例:
首先編寫一個json文件j.txt,內容如下:
{"errno":1,"errmsg":"操作成功!","data":[]}
python代碼如下:

import json
# 讀取文件內容
whth open('j.txt', 'r') as fr:
print(fr.read())
輸出如下:
{"errno":1,"errmsg":"操作成功!","data":[]}

# 解析json文件
with open('j.txt', 'r') as fr:
o = json.load(fr)
print(o['errno'])
print(o['errmsg'])
print(len(o['data']))
輸出如下:
1
操作成功!
0
3、函數說明:
load(fp, cls=None, object_hook=None, parse_float=None, parse_int=None, parse_constant=None, object_pairs_hook=None, **kw)
反序列化fp(一個.read()包含 - 支持類文件對象一個JSON文件),以一個Python對象。
object_hook是將與被調用的可選功能任何對象文本解碼(一個``dict``)的結果。返回值object_hook將用來代替dict。此功能可用於實現自定義解碼器(例如JSON-RPC級提示)。
object_pairs_hook是將與被調用的可選功能任何對象的結果與對的有序列表字面解碼。該的返回值object_pairs_hook將用來代替dict。
此功能可用於實現依賴於定製解碼器命令該鍵和值對被解碼(例如,collections.OrderedDict會記得插入的順序)。如果object_hook也定義了object_pairs_hook優先。
要使用自定義JSONDecoder子類,與cls指定它kwarg;否則JSONDecoder使用。
4、其它說明:
也可以使用json.loads函數來直接處理字元串,方法如下:
o=json.loads('{"errno":0,"errmsg":"操作成功!","data":[]}')

⑹ python修改json 對象為數組

import json
json_str = '' #
data = json.loads(json_str) # data is a dict
acc = data['data'][0]['Acc']
arr = list(map(float,acc.split(',')))

⑺ python調用json後關閉程序會清空json文件怎麼改

一、代碼不用百修改:


⑻ 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

⑼ python怎麼轉化成json格式

如果datas是Python的原始數據,並且datas中沒有非ascii碼,可以使用如下語句轉換為json格式:

import json
json.mps(datas)

當datas中含有中文等非ascii字元時,可以使用如下參數:

json.mps(datas, ensure_ascii=False)

如果想美化輸出格式,可以使用indent參數:

json.mps(datas, indent=4)

⑽ python如何修改JSON文件中的某個key值

直接文本替換不就行了,json文件讀取到字元串變數里,replace一下,再寫回json文件。

熱點內容
鏈表的存儲需不需要事先預估空間 發布:2022-10-08 07:27:13 瀏覽:836
sql顯示日期格式 發布:2022-10-08 07:25:16 瀏覽:594
千月源碼 發布:2022-10-08 07:25:00 瀏覽:142
c語言程序設計與應用張小東 發布:2022-10-08 07:23:52 瀏覽:215
java調用另一個類 發布:2022-10-08 07:22:41 瀏覽:947
sqlserver資料庫安裝 發布:2022-10-08 07:16:35 瀏覽:850
php資源類型 發布:2022-10-08 07:13:54 瀏覽:511
安卓平板怎麼卡刷 發布:2022-10-08 07:09:03 瀏覽:233
苦兒流浪記中央編譯 發布:2022-10-08 07:08:07 瀏覽:699
青醫住院無線密碼是多少 發布:2022-10-08 07:07:57 瀏覽:499