我的 json 資料如下所示:
{
"metadata": [
"{'Node_id': 38,'Maxpressure': -10.97, 'Minimum_pressure': -22.03}",
"{'Node_id': 39,'Maxpressure': 23.83, 'Minimumpressure': 10.31,}"]
}
我希望我的資料看起來像:
{
"metadata": [
{'Node_id': 38,'Maxpressure': -10.97, 'Minimum_pressure': -22.03},
{'Node_id': 39,'Maxpressure': 23.83, 'Minimumpressure': 10.31,}]
}
uj5u.com熱心網友回復:
import json
arr = [
'{"Node_id": 38,"Maxpressure": -10.97,
"Minimum_pressure": -22.03}',
'{"Node_id": 39,"Maxpressure": 28.83,
"Minimum_pressure": 10.31}'
]
res_arr = []
for obj in arr:
y = json.loads(obj)
res_arr.append(y)
結果是一個 Python 字典:
列印(res_arr)
uj5u.com熱心網友回復:
您需要評估元資料串列中的字串,這很容易完成:
from ast import literal_eval
J = {
"metadata": [
"{'Node_id': 38,'Maxpressure': -10.97, 'Minimum_pressure': -22.03}",
"{'Node_id': 39,'Maxpressure': 23.83, 'Minimumpressure': 10.31,}"]
}
P = {'metadata': [literal_eval(s) for s in J['metadata']]}
print(P)
輸出:
{'metadata': [{'Node_id': 38, 'Maxpressure': -10.97, 'Minimum_pressure': -22.03}, {'Node_id': 39, 'Maxpressure': 23.83, 'Minimumpressure': 10.31}]}
uj5u.com熱心網友回復:
如果你的字串看起來像
s = """
{
"metadata": [
"{'Node_id': 38,'Maxpressure': -10.97, 'Minimum_pressure': -22.03}",
"{'Node_id': 39,'Maxpressure': 23.83, 'Minimumpressure': 10.31,}"]
}
"""
然后您可以使用模塊獲得所需的literal_eval輸出ast。
from ast import literal_eval
d = literal_eval(s)
# iterate over keys of dictionary d
for key in d:
d[key] = [literal_eval(item) for item in d[key]]
print(d)
筆記
literal_eval(s)回傳字典
{'metadata': ["{'Node_id': 38,'Maxpressure': -10.97, 'Minimum_pressure': "
'-22.03}',
"{'Node_id': 39,'Maxpressure': 23.83, 'Minimumpressure': "
'10.31,}']}
- 我們迭代字典的鍵,
d以防您的實際資料在字典中不止一個key。在提供的示例輸入中,只有一個鍵,"metadata"。 d[key]當前是字串串列。- 我們用一個通過應用到每個字串
d[key]形成的新串列來替換.literal_evald[key]
輸出
{'metadata': [{'Maxpressure': -10.97,
'Minimum_pressure': -22.03,
'Node_id': 38},
{'Maxpressure': 23.83,
'Minimumpressure': 10.31,
'Node_id': 39}]}
警告
您可能已經注意到,實作上述目的的另一種方法是將所有的literal_eval's替換為eval. 除非您可以確定您信任輸入源,否則您不應該使用內置的。eval對于這個特定的應用程式,絕對沒有必要使用eval,沒有它你也可以實作你想要的。該literal_eval選項是一個安全的選擇。從literal_eval 檔案中,該函式用于
[s]afely 評估包含 Python 文字或容器顯示的運算式節點或字串。提供的字串或節點只能由以下 Python 文字結構組成:字串、位元組、數字、元組、串列、字典、集合、布林值、無和省略號。
這可用于安全地評估包含來自不受信任來源的 Python 值的字串,而無需自己決議這些值。它不能評估任意復雜的運算式,例如涉及運算子或索引。
uj5u.com熱心網友回復:
如果您想將 json 資料轉換為 python 字典。
首先您將元資料清除為變數,然后使用
json.loads(metadata)
這是您將資料從 json 獲取到字典的方法。
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/463398.html
上一篇:雪花json檢索具有特定值的標簽
下一篇:洗掉嵌套在嵌套JSON檔案中
