python寫入json
Ⅰ python2.7中typeerror: long() argument must be a string or a number,not 'NoneType'該怎麼解決
出現這種情況一般都是獲取內容時得到的是json格式數據或者說是字典格式數據,然後把json格式數據寫入文件時才會報錯。解決方法如下:
1、首先在Python中可以調用json模塊以處理json格式數據,這樣json格式數據便可以轉換成字元串了。
Ⅱ python怎麼把json文件夾轉成Excel表
#導入所需的庫:
import os
import json
import pandas as pd
#定義一個函數,該函數將打開並讀取給定JSON文件的內容:
def read_json_file(file_path):
with open(file_path, 'r') as f:
data = json.load(f)
return data
#使用os模塊遍歷JSON文件夾中的所有文件,並將它們讀取為Python數據結構:
json_folder = '/path/to/json/folder' # JSON文件夾的路徑
data_list = []
for file_name in os.listdir(json_folder):
file_path = os.path.join(json_folder, file_name)
if os.path.isfile(file_path) and file_path.endswith('.json'):
data = read_json_file(file_path)
data_list.append(data)
#將收集到的數據轉換為一個Pandas DataFrame對象:
df = pd.DataFrame(data_list)
#使用Pandas的to_excel方法將DataFrame對象保存為Excel文件:
excel_file = '/path/to/result/excel_file.xlsx' # 結果Excel文件的路徑和名稱
df.to_excel(excel_file, index=False)
#每個JSON文件的內容將成為Excel表中的一行。請將上述代碼中的路徑和文件名替換為你自己的JSON文件夾路徑和要保存的Excel文件路徑。
Ⅲ python中為什麼用json有什麼作用
今天我也在這個問題上糾結很久。最後才想明白,我來回答下。
網上很多網友總結了json模塊的用法,但沒說json模塊有什麼用,幹嘛要有這個模塊。可能都明白、太簡單,覺得沒必要說。但作為小白的我不明白,而且在練習使用load()和mp()時遇到錯誤。
首先糾正,json格式不是字元串。json與python裡面的字典是一樣的格式。
python的json模塊四個方法的作用為:
mps()#把數據轉成字元串;
loads()#把字元串符號『』去掉;
mp(x,f)#將x的內容直接寫入f,不改變格式;
load(x,f)#讀取f保存為x,同樣不改變格式。
重點來了,f = open()下的read()的方法,輸出是字元串,wirte()方法的輸入也必須是字元串。
結論:因為f=open()下的讀寫方法都必須是字元串,很不方便。而非字元串的數據大多是json格式,所以就有了json模塊。方便讀寫非字元串的數據。
因為這個目的,json模塊的loads()和mps()方法有些雞肋,還造成困擾,因為明明json不是字元串,幹嘛要轉成字元串,另外mp()和load()方法表面上和它們不一樣。只有明白json模塊的目的,才會搞明白。
在python 3.6的說明文檔中,把json模塊放在了《7.2.文件讀寫》部分。我也是看到這里才去練習json模塊。但出問題,有些糊塗,明白json模塊的作用後,才更清楚幹嘛把json模塊放這里。
小白的淺見,若錯誤請指教,謝謝。
Ⅳ python-介面調用傳json參數的兩種方法
payload={
"Jessie":"Hello",
"python":12334,
"requests":True,
}
url=" http://httpbin.org/post "
r1=requests.post(url,json=payload)
r2 = requests.post(url,json.mps(payload))
print(r1.text)
r2=requests.post(url,data=json.mps(payload))
print(r2.text)
Ⅳ 濡備綍浣跨敤Python澶勭悊JSON鏁版嵁
濡備綍浣跨敤Python澶勭悊JSON鏁版嵁錛熸湰綃囨枃絝犲氨緇欏ぇ瀹朵粙緇嶄嬌鐢≒ython澶勭悊JSON鏁版嵁鐨勫熀鏈鏂規硶銆傛湁涓瀹氱殑鍙傝冧環鍊礆紝鏈夐渶瑕佺殑鏈嬪弸鍙浠ュ弬鑰冧竴涓嬶紝甯屾湜瀵逛綘浠鏈夋墍甯鍔┿
鍦ㄤ粙緇嶄嬌鐢≒ython澶勭悊JSON鏁版嵁鐨勫熀鏈鏂規硶涔嬪墠錛屾垜浠棣栧厛瑕佷簡瑙d竴涓嬩粈涔堟槸JSON錛
JSON浠h〃鈥淛avaScript Object Notation鈥濓紝鍙浠ヨ存槸鈥滃熀浜嶫avaScript璇璦絎﹀彿鐨勬暟鎹鏍煎紡鈥濄備絾鏄錛岃ヨ〃紺烘硶浠呭熀浜嶫avaScript錛屽彲鐢ㄤ簬鍏朵粬鍚勭嶈璦銆
JSON鏄鎴戜滑瀛樺偍鍜屼氦鎹㈡暟鎹鐨勪竴縐嶆柟寮忥紝瀹冮氳繃鍏惰娉曞疄鐜幫紝騫跺湪璁稿歐eb搴旂敤紼嬪簭涓浣跨敤銆侸SON鐨勪紭鐐瑰湪浜庡畠鍏鋒湁浜虹被鍙璇葷殑鏍煎紡錛岃繖鍙鑳芥槸鍦ㄦ暟鎹浼犺緭涓浣跨敤瀹冪殑鍘熷洜涔嬩竴錛屾ゅ栬繕鏈変嬌鐢ˋPI鏃剁殑鏈夋晥鎬с
鍦↗SON涓錛屾暟鎹浠ュ悕縐/鍊礆紙name/value錛夊硅〃紺猴紱澶ф嫭鍙峰唴瀛樺偍瀵硅薄錛屾瘡涓鍚嶇О鍚庤窡'錛'錛堝啋鍙鳳級錛屽悕縐/鍊煎逛箣闂磋佺敤錛堥楀彿錛夊垎闅旓紱鏂規嫭鍙峰寘鍚鏁扮粍錛屽間互錛堥楀彿錛夊垎闅斻
JSON鏍煎紡鏁版嵁鐨勭ず渚嬶細
{
"book1":{
"title": "Python Beginners",
"year": 2005 ,
"page": 399
},
"book2":{
"title": "Python Developers",
"year": 2006 ,
"page": 650
}
}涓嬮潰鎴戜滑鏉ヨ︾粏浜嗚В涓涓嬪湪Python涓濡備綍澶勭悊JSON鏁版嵁銆
Python浣垮緱澶勭悊JSON鏁版嵁鍙樺緱綆鍗曘傚疄鐜版ょ洰鐨勭殑妯″潡鏄痡son妯″潡銆傝ユā鍧楀簲璇ュ寘鍚鍦≒ython錛堝唴緗錛夊畨瑁呬腑錛屽洜姝や綘涓嶉渶瑕佸儚浣跨敤PDF鍜孍xcel鏂囦歡閭f牱瀹夎呬換浣曞栭儴妯″潡銆傝佷嬌鐢ㄦゆā鍧楋紝浣犲敮涓闇瑕佺殑鏄瀵煎叆瀹冿紙寮澶村啓鍏ワ級錛
import json浣嗘槸錛孞SON搴撴槸鍋氫粈涔堢殑鍛錛熸ゅ簱涓昏佷粠鏂囦歡鎴栧瓧絎︿覆瑙f瀽JSON銆傚畠榪樺皢JSON瑙f瀽涓篜ython涓鐨勫瓧鍏告垨鍒楄〃錛屽弽涔嬩害鐒訛紝鍗沖皢Python瀛楀吀鎴栧垪琛ㄨ漿鎹涓篔SON瀛楃︿覆銆
璇誨彇JSON錛圝SON杞琍ython錛
璇籎SON鎰忓懗鐫灝咼SON杞鎹涓篜ython鍊礆紙瀵硅薄錛夈傚備笂鎵榪幫紝json搴撳皢JSON瑙f瀽涓篜ython涓鐨勫瓧鍏告垨鍒楄〃銆備負姝わ紝鎴戜滑浣跨敤loads()鍑芥暟錛堜粠瀛楃︿覆鍔犺澆錛夛紝濡備笅鎵紺猴細
import json
jsonData = '{"name": "Frank", "age": 39}'
jsonToPython = json.loads(jsonData)濡傛灉瑕佹煡鐪嬭緭鍑猴紝璇鋒墽琛 print jsonToPython錛屽湪榪欑嶆儏鍐典笅錛屼綘灝嗚幏寰椾互涓嬭緭鍑猴細
{'age': 39, 'name': 'Frank'}涔熷氨鏄璇達紝鏁版嵁浣滀負Python瀛楀吀錛圝SON瀵硅薄鏁版嵁緇撴瀯錛夎繑鍥炪
Python杞琂SON
涓婁竴鑺傛垜浠浠嬬粛浜咼SON杞琍ython錛岃繖涓鑺傛垜浠灝嗗悜浣犲睍紺哄備綍灝哖ython鍊艱漿鎹錛堢紪鐮侊級涓篔SON銆
鍋囪炬垜浠鍦≒ython涓鏈変互涓嬪瓧鍏革細
import json
pythonDictionary = {'name':'Bob', 'age':44, 'isEmployed':True}
dictionaryToJson = json.mps(pythonDictionary)濡傛灉鎴戜滑榪愯 print dictionaryToJson錛屾垜浠寰楀埌浠ヤ笅JSON鏁版嵁錛
{"age": 44, "isEmployed": true, "name": "Bob"}鍥犳わ紝姝よ緭鍑鴻瑙嗕負瀵硅薄錛圖ictionary錛夌殑鏁版嵁琛ㄧず銆傝ユ柟娉昫umps()鏄姝ょ被鎿嶄綔鐨勫叧閿銆
姝ゆ椂闇瑕佹敞鎰忕殑鏄錛孞SON涓嶈兘瀛樺偍鎵鏈夌被鍨嬬殑Python瀵硅薄錛屽彧鑳藉瓨鍌ㄤ互涓嬬被鍨嬶細鍒楄〃; 瀛楀吀; 甯冨皵鍊; 鏁; 瀛楃︿覆; 娌℃湁銆傚洜姝わ紝闇瑕佽漿鎹浠諱綍鍏朵粬綾誨瀷浠ヤ究瀛樺偍鍦↗SON涓銆
鍋囪炬垜浠鏈変互涓嬭劇▼錛
class Employee(object):
def __init__(self, name):
self.name = name鍋囪炬垜浠鍒涘緩浜嗕竴涓鏂板硅薄abder錛屽備笅鎵紺猴細
abder = Employee('Abder')濡傛灉鎴戜滑鎯沖皢姝ゅ硅薄杞鎹涓篔SON錛岃ユ庝箞鍔烇紵閭f槸json.mps(abder)錛熷湪榪欑嶆儏鍐典笅錛屼綘灝嗘敹鍒扮被浼間簬浠ヤ笅鍐呭圭殑閿欒錛
Traceback (most recent call last):
File "test.py", line 8, in <mole>
abderJson = json.mps(abder)
File "/usr/local/Cellar/python/2.7.10_2/Frameworks/Python.framework/Versions/2.7/lib/python2.7/json/__init__.py", line 243, in mps
return _default_encoder.encode(obj)
File "/usr/local/Cellar/python/2.7.10_2/Frameworks/Python.framework/Versions/2.7/lib/python2.7/json/encoder.py", line 207, in encode
chunks = self.iterencode(o, _one_shot=True)
File "/usr/local/Cellar/python/2.7.10_2/Frameworks/Python.framework/Versions/2.7/lib/python2.7/json/encoder.py", line 270, in iterencode
return _iterencode(o, 0)
File "/usr/local/Cellar/python/2.7.10_2/Frameworks/Python.framework/Versions/2.7/lib/python2.7/json/encoder.py", line 184, in default
raise TypeError(repr(o) + " is not JSON serializable")
TypeError: <__main__.Employee object at 0x10e74b750> is not JSON serializable浣嗘槸錛屾湁瑙e喅鏂規硶鍚楋紵騫歌繍鐨勬槸鏈夈傝佽В鍐蟲ら棶棰橈紝鎴戜滑鍙浠ュ畾涔夌被浼間簬浠ヤ笅鐨勬柟娉曪細
def jsonDefault(object):
return object.__dict__鐒跺悗灝嗗硅薄緙栫爜涓篔SON錛屽備笅鎵紺猴細
jsonAbder = json.mps(abder, default=jsonDefault)濡傛灉浣犺繍琛 print jsonAbder錛屼綘搴旇ュ緱鍒頒互涓嬭緭鍑猴細
{"name": "Abder"}鎴戜滑鐜板湪宸茬粡灝哖ython瀵硅薄錛坅bder錛夌紪鐮佷負JSON銆
Ⅵ python中如何遍歷json數組
1、創建python文件,testjson.py;