【python】str與json型別轉換

小亮520cl發表於2018-05-18

原文地址:https://blog.csdn.net/lluozh2015/article/details/75092877
在寫介面測試框架時。避免不了資料型別的轉換,比如強制轉換string型別,比如轉json型別

str轉json

python字串轉json物件,需要使用json模組的loads函式

import json str = '{"accessToken": "521de21161b23988173e6f7f48f9ee96e28", "User-Agent": "Apache-HttpClient/4.5.2 (Java/1.8.0_131)"}' j = json.loads(str) print(j) print(type(j)) 
	
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

輸出

{'accessToken': '521de21161b23988173e6f7f48f9ee96e28', 'User-Agent': 'Apache-HttpClient/4.5.2 (Java/1.8.0_131)'}
<class 'dict'> 
	
  • 1
  • 2

json轉str

import json j = {"accessToken": "521de21161b23988173e6f7f48f9ee96e28", "User-Agent": "Apache-HttpClient/4.5.2 (Java/1.8.0_131)"} str = json.dumps(j) print(str) print(type(str)) 
	
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

輸出

{"accessToken": "521de21161b23988173e6f7f48f9ee96e28", "User-Agent": "Apache-HttpClient/4.5.2 (Java/1.8.0_131)"}
<class 'str'> 
	
  • 1
  • 2

問題

寫這篇文章主要是為了mark一個問題,在str轉json時,str格式引號問題導致失敗報錯

看看下面這段程式碼

import json str = "{'accessToken': '521de21161b23988173e6f7f48f9ee96e28', 'User-Agent': 'Apache-HttpClient/4.5.2 (Java/1.8.0_131)'}" j = json.loads(str) print(j) print(type(j)) 
	
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

咋一看沒啥問題,但是出現錯誤

json.decoder.JSONDecodeError: Expecting property name enclosed in double quotes: line 1 column 2 (char 1)
	
  • 1

為什麼呢?

字串中,雙引號在外圍,單引號在內嵌,導致轉換失敗

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/29096438/viewspace-2154672/,如需轉載,請註明出處,否則將追究法律責任。

相關文章