關於pythonjson轉換的信息

本文目錄一覽:

python3 對象 |字典|json|yaml|字元串 相互轉化

在研究 k8s 的yaml 配置文件的時候,我總擔心自己一不小心 會寫錯,所以我嚮往 使用將對象 序列化 yaml 的形式,

其實 python object 可以 直接 轉 yaml ,甚至也可以 直接 轉成yaml文件!!!

這裡 會經常用到幾個 函數 vars() ast.

我們先嘗試用最笨的方法 實現 object到yaml 的轉化

在python對象 convert to dict 的形式,使用 vars()函數

然後 dict convert to json 使用 json.dumps(dict)函數

然後 json converte to yaml 使用 ya= yaml.load(json.dumps(dict)) 然後

再 yaml.safe_dump(ya,default_flow_style=False)

至此我們看到 從 python Object — dict —- json — yaml 的轉化

其中 obj dict json yaml 轉 string ,只要 str()函數即可,或者 str(vars())結合

yaml 格式 寫入到文件 ,需要注意的是, open()函數 的mode 一定要是 ‘w’ ,不能是』wb’, b代表是二進位寫入

yaml 寫入的是dict str,使用 『wb’ 會報錯,[yaml TypeError: a bytes-like object is required, not ‘str’]

【出現該錯誤往往是通過open()函數打開文本文件時,使用了『rb』屬性,如:fileHandle=open(filename,’rb’),則此時是通過二進位方式打開文件的,所以在後面處理時如果使用了str()函數,就會出現該錯誤,該錯誤不會再python2中出現。

具體解決方法有以下兩種:

第一種,在open()函數中使用『r』屬性,即文本方式讀取,而不是『rb』,以二進位文件方式讀取,可以直接解決問題。

第二種,在open()函數中使用『rb』,可以在使用之前進行轉換,有以下實例,來自: 】

其實 python object 可以 直接 轉 yaml ,甚至也可以 直接 轉成yaml文件!!!

比如我已經定義了一個 Dog python class,他有 好幾個屬性 並已經賦值初始化了

另外生成 yaml 對象

生成yaml文件

結果是

反過來 yaml —- json — 持久化 json 文件 indent=1屬性是為了讓 json 不以單行展示,而是展開

注意的是 python 的 dict 和set 很相似 ,都是 { }, set 里是list, dict 是鍵值對

【# set object is not JSON serializable [duplicate]

打開 demo.json

yaml — dict

yaml — python object

json — dict

json.loads()

dict– json

json.jumps()

str — dict

newdict=dict(str)

json — python object

一個python object無法直接與json轉化,只能先將對象轉化成dictionary,再轉化成json;對json,也只能先轉換成dictionary,再轉化成object,通過實踐,源碼如下:

yaml — python object

對yaml,也只能先轉換成json —dictionary,再轉化成object,通過實踐,源碼如下:

dict — -python object

python對象 默認都有一個 私有的屬性 dict 取值 就是 object的 字典形式, 賦值就就可以給對象屬性對應賦值

例如json 轉 對象

對象 轉 json

Python之dict(或對象)與json之間的互相轉化

在Python語言中,json數據與dict字典以及對象之間的轉化,是必不可少的操作。

dict字典轉json數據

對象轉json數據

json數據轉成dict字典

json數據轉成對象

json的load()與dump()方法的使用

dump()方法的使用

python中json怎麼轉dict

在Python中自帶json庫。通過import json導入。

在json模塊有以下方法,

loads():將json數據轉化成dict數據

dumps():將dict數據轉化成json數據

load():讀取json文件數據,轉成dict數據

dump():將dict數據轉化成json數據後寫入json文件

【Python】淺談python中的json

一 前言  

   最近一直在做開發相關的工作–基於Django的web 平台,其中需要從model層傳輸數據到view 層做數據展示或者做業務邏輯處理。我們採用通用的Json格式–Json(JavaScript Object Notation) 是一種輕量級的數據交換格式,易於閱讀和程序解析。

二 認識Json

   2.1 Json 結構

   常見的Json格式為 「名稱/值」對的集合,其中 值可以是對象,列表,字典,字元串等等。比如

backup_data = {“back_to_host”: “dbbk0”,

“ip_address”: “10.10.20.3”,

“host_name”: “rac4”,

“port”: 3306}

  2.2 使用Json

  Python的Json模塊序列化與反序列化的過程分別是 編碼和解碼。這兩個過程涉及到兩組不同的函數

  編碼 把一個Python對象編碼轉換成Json字元串,json.dumps(data)/json.dump(data,file_handler)

  解碼 把Json格式字元串解碼轉換成Python對象,json.loads(data)/json.load(file_handler)

  在python中要使用Json模塊做相關操作,必須先導入:

import Json

  2.3 主要函數

  編碼函數主要有 json.dumps(data)/json.dump(data,file_handler)

   json.dumps()的參數是將python對象轉換為字元串,如使用json.dumps序列化的對象json_dumps=json.dumps({‘a’:1, ‘b’:2}) ,json_dumps='{“b”: 2, “a”: 1}’

   json.dump 是將內置類型序列化為json對象後寫入文件。

 解碼函數主要由json.loads(data)/json.load(file_handler)  

    json.loads的參數是內存對象,把Json格式字元串解碼轉換成Python對象,json_loads=json.loads(d_json)  #{ b”: 2, “a”: 1},使用load重新反序列化為dict

    json.load()的參數針對文件句柄,比如本地有一個文件/tmp/test.json  json_load=json.load(open(‘/tmp/test.json’))

具體案例參考如下:

In [3]: data={“back_to_host”: “rac1”,

…: “ip_address”: “10.215.20.3”,

…: “host_name”: “rac3”,

…: “port”: 3306}

In [7]: json_str=json.dumps(data)

In [8]: print json_str

{“ip_address”: “10.215.20.3”, “back_to_host”: “rac1”, “host_name”: “rac3”, “port”: 3306}

In [9]: json_loads=json.load(json_str)

—————————————————————————

AttributeError Traceback (most recent call last)

ipython-input-9-180506f16431 in module()

—- 1 json_loads=json.load(json_str)

/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/json/__init__.pyc in load(fp, encoding, cls, object_hook, parse_float, parse_int, parse_constant, object_pairs_hook, **kw)

284

285 “”

注意 從上面的報錯信息來看 json.loads 傳參是字元串類型,並不是文件句柄,沒有 read()屬性。

In [10]: json_loads=json.loads(json_str)

In [11]: print json_loads

{u’back_to_host’: u’rac1′, u’ip_address’: u’10.215.20.3′, u’host_name’: u’rac3′, u’port’: 3306}

In [12]: type(json_loads)

Out[12]: dict

In [13]: type(json_str)

Out[13]: str

利用dump 將數據寫入 dump.json

In [17]: with open(‘/tmp/dump.json’,’w’) as f:

…: json.dump(json_str,f)

…:

yangyiDBA:~ yangyi$ cat /tmp/dump.json

“{\”ip_address\”: \”10.10.20.3\”, \”back_to_host\”: \”rac1\”, \”host_name\”: \”rac3\”, \”port\”: 3306}”

yangyiDBA:~ yangyi$

利用json.load 將dump.sjon的數據讀出來並賦值給 data 

In [18]: with open(‘/tmp/dump.json’,’r’) as f:

…: data=json.load(f)

…:

In [19]: print data

{“ip_address”: “10.10.20.3”, “back_to_host”: “rac1”, “host_name”: “rac3”, “port”: 3306}

三 小結

  本文算是一篇學習筆記,主要對比了json.loads/json.load  , json.dumps/ json.dump 的使用差異 ,方便以後更好的使用json 。

以上為本次分享內容,感謝觀看。

python怎麼轉化成json格式

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

import

json

json.dumps(datas)

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

json.dumps(datas,

ensure_ascii=False)

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

json.dumps(datas,

indent=4)

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

操作成功!

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”:[]}’)

原創文章,作者:D74H7,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/128884.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
D74H7的頭像D74H7
上一篇 2024-10-03 23:25
下一篇 2024-10-03 23:25

相關推薦

  • Java 監控介面返回信息報錯信息怎麼處理

    本文將從多個方面對 Java 監控介面返回信息報錯信息的處理方法進行詳細的闡述,其中包括如何捕獲異常、如何使用日誌輸出錯誤信息、以及如何通過異常處理機制解決報錯問題等等。以下是詳細…

    編程 2025-04-29
  • 使用Python爬蟲獲取電影信息的實現方法

    本文將介紹如何使用Python編寫爬蟲程序,來獲取和處理電影數據。需要了解基本的Python編程語言知識,並使用BeautifulSoup庫和Requests庫進行爬取。 一、準備…

    編程 2025-04-28
  • Python爬取網頁信息

    本文將從多個方面對Python爬取網頁信息做詳細的闡述。 一、爬蟲介紹 爬蟲是一種自動化程序,可以模擬人對網頁進行訪問獲取信息的行為。通過編寫代碼,我們可以指定要獲取的信息,將其從…

    編程 2025-04-28
  • 如何使用Python執行Shell命令並獲取執行過程信息

    本文將介紹如何使用Python執行Shell命令並獲取執行過程信息。我們將從以下幾個方面進行闡述: 一、執行Shell命令 Python內置的subprocess模塊可以方便地執行…

    編程 2025-04-28
  • Python實現身份信息模擬生成與查驗

    本文將從以下幾個方面對Python實現身份信息模擬生成與查驗進行詳細闡述: 一、身份信息生成 身份信息生成是指通過代碼生成符合身份信息規範的虛假數據。Python中,我們可以使用f…

    編程 2025-04-27
  • Dapper使用getschema獲取表信息

    本文旨在介紹Dapper中使用getschema獲取表信息的方法和注意事項。 一、獲取某張表的所有列信息 使用Dapper獲取某張表信息,可以使用 `IDbConnection.G…

    編程 2025-04-27
  • 已裝備我軍的空中信息化作戰平台

    本文將會從多個方面詳細闡述已裝備我軍的空中信息化作戰平台。 一、平台概述 已裝備我軍的空中信息化作戰平台是一個全新的作戰系統,具備實時數據採集、處理、分析、共享的能力。它可以在不同…

    編程 2025-04-27
  • 通過提交信息搜索-使用git

    本篇文章重點講解如何使用git通過提交信息來搜索。我們將從多個方面介紹如何使用git來搜索提交信息,並提供相應的代碼示例以供參考。 一、搜索方式 Git提供了三種搜索方式,分別為:…

    編程 2025-04-27
  • Linux查看系統信息

    一、CPU信息 Linux系統下,查看CPU的信息最常用的命令是lscpu。該命令可以顯示CPU架構、核心數量、線程數、緩存大小、CPU頻率等信息。例如: lscpu 該命令會輸出…

    編程 2025-04-24
  • 軟考 信息安全工程師

    軟考 信息安全工程師是一項技能型國家級資格認證考試,主要測試考生在信息安全領域的理論知識和實踐技能,是證明個人信息安全能力的重要證書。本文將從多個方面對軟考 信息安全工程師做詳細的…

    編程 2025-04-23

發表回復

登錄後才能評論