簡體   English   中英

寫入 JSON 時如何不轉義反斜杠

[英]How to not escape backslash when writing to JSON

我正在嘗試讀取 JSON 文件並向其添加新的key,value對。 然后將 JSON 文件寫回。 例子

# Read the JSON and add a new K,V
input_file_path = os.path.join(os.path.dirname(__file__), 'test.json')
input_file = open(input_file_path, 'r')
data = json.load(input_file)
data['key'] = os.environ.get('KEY', '') #<-- Adding a new K,V
input_file.close()

# Write the JSON to tmp.
output_file = open('/tmp/' + 'test.json', 'w')
json.dump(data, output_file, indent=4)
output_file.close()

我的輸入 JSON 看起來像這樣

{
  "type": "account"
}

我的名為KEY變量看起來像這樣-----BEGINKEY-----\\nVgIBMIIE

寫入 tmp 的最終 JSON 文件如下所示

{
  "private_key": "-----BEGINKEY-----\\nVgIBMIIE",
  "type": "account"
}

我無法弄清楚為什么要轉義反斜杠? 我怎樣才能避免這種情況?

該程序將您的輸入字符串視為原始字符串,因此添加了額外的\\ 原始的 '\\' 實際上並沒有轉義任何內容,因此要在 Python 中將其表示為字符串,您需要對其進行轉義。 然而,正如您所看到的,這可能是有問題的。 您可以使用以下命令將字符串強制恢復為 unicode 格式:

import codecs

raw_val = os.environ.get('KEY', '')
val = codecs.decode(raw_val, 'unicode_escape')
data['key'] = val

如果要在 JSON 中表示-----BEGINKEY-----\\nVgIBMIIE ,則必須使用雙引號字符串。

在雙引號字符串中,反斜杠具有特殊含義。 不能簡單地通過鍵入"\\"來編寫反斜杠字符。 這會產生錯誤。

因此,必須轉義反斜杠。 因此-----BEGINKEY-----\\nVgIBMIIE在 JSON 字符串中變為"-----BEGINKEY-----\\\\nVgIBMIIE"

如果你想去掉反斜杠,你需要代表

-----BEGINKEY-----
VgIBMIIE

而不是

-----BEGINKEY-----\nVgIBMIIE

這兩件事不是一回事。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM