在Python 2 中解析JSON 時保留字串型別
在Python 2 中解析JSON 有時會導致字串值轉換為Unicode 物件。當與專門需要字串物件的庫互動時,這可能會帶來挑戰。
JSON 轉換為Unicode 物件
當使用JSON 或simplejson 載入ASCII 編碼的文字檔案時Python 2 中,您可能會遇到字串值轉換為Unicode對象的問題。這是由 Python 2 的預設編碼機制解釋的,該機制假定文字採用 Unicode。
替代解析選項:PyYAML
要解決此問題,請考慮使用 PyYAML 解析 JSON檔。 PyYAML 預設將鍵和值視為字串對象,為保留字串類型提供了簡單的解決方案。
範例
<code class="python">import yaml list_dump = json.dumps(['a', 'b']) yaml.safe_load(list_dump) # Returns string objects: ['a', 'b']</code>
註解:
轉換函數
如果 PyYAML 不是一個選項或您需要使用 Unicode,可以使用轉換函數,例如 Mark 提出的轉換函數可以利用 Amery。
範例
<code class="python">def convert_to_str(data): """Convert Unicode values to strings.""" if isinstance(data, dict): return {convert_to_str(k): convert_to_str(v) for k, v in data.items()} elif isinstance(data, list): return [convert_to_str(v) for v in data] elif isinstance(data, unicode): return data.encode('utf-8') else: return data</code>
在 JSON 載入期間使用此函數作為 object_hook,Unicode 值將轉換為字串。
以上是在 Python 2 中解析 JSON 時如何保留字串型別?的詳細內容。更多資訊請關注PHP中文網其他相關文章!