簡體   English   中英

將json dict值中的dict的字符串表示形式轉換為dict

[英]convert string representation of a dict inside json dict value to dict

大家好,如果標題措辭不佳,則感到抱歉。 我在解決如何解決遇到的這個問題時遇到了麻煩。 我本來希望只將dict作為此鍵的值傳遞給json obj,但可悲的是,我必須將其作為字符串傳遞。 所以,我有一個看起來像這樣的json dict對象

data = {"test": "Fuzz", "options": "'{'size':'Regular','connection':'unconnected'}'"} 顯然,我希望第二個dict值不是字典的字符串表示形式,而是字典。 是在這里只刪除data [options]的倒數第二個和倒數第二個單引號的最佳方法,還是有更好的選擇?

抱歉給您帶來任何混亂。 這是我執行后json對象的外觀

json.dump(data, <filename>)

選項的值可以視為另一個變量x,它等效於'{'size':'Regular','connection':'unconnected'}'

我可以做x [1:-1],但是我不確定這是否是最pythonic的做事方式。

import ast

bad_string_dict = "'{'size':'Regular','connection':'unconnected'}'"
good_string_dict = bad_string_dict.strip("'")
good_dict = ast.literal_eval(good_string_dict)
print(good_dict)

您將不得不刪除引號,而沒有其他方法

鑒於OP的評論,我建議以下幾點:

  1. 將環境變量設置為已知的數據格式(例如:json / yaml / ...),而不是特定的語言(python)
  2. 使用json模塊(或您選擇的格式)加載數據

數據應如下所示:

raw_data = {"test": "Fuzz", "options": "{\"size\": \"Regular\", \"connection\": \"unconnected\"}"}

並且代碼應如下所示:

raw_options = raw_data['options']
options = json.loads(raw_options)
data = {**raw_data, 'options': options}

暫無
暫無

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

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