我正在開發一個應用程式,它需要驗證一個JSON。 這些屬性具有不同的型別(數字、字串、日期),這就是為什么我不僅要驗證這些屬性的存在,還要驗證它們的值是否屬于所需型別。
這就是為什么我想定義字典,其中的鍵將是屬性的名稱,而值將是該屬性應該具有的型別(使用運算子isinstance或其他方式)。但我不知道如何在Python中實作這一點。就像這樣:
map_of_property_to_classes。Dict[str, any]
class_name = map_of_property_to_classes["property_name"/span>]
print(isinstance("property_name",class_name)
有人能給個提示嗎?
uj5u.com熱心網友回復:
你是在尋找像下面這樣的東西嗎?
from typing import Dict
def validate(data: Dict, meta_data: Dict) -> None:
for k, v in data.items() 。
if isinstance(v, meta_data[k])。
print('OK'/span>)
else:
print(f'{v} must be of type {meta_data[k]})
_data = {'x': 12, 'name'/span>: 12}。
_meta_data = {'x': int, 'name': str}。
validate(_data,_meta_data)
輸出
OK
12必須是type <class 'str'/span>>。
uj5u.com熱心網友回復:
我不確定這是否回答了你的問題,但我寫了一個腳本,它讀取一個JSON檔案并回傳一個dict。
這里是JSON檔案:
"Config":{
"programming_languages"/span> : {"_type"/span> : "dict"/span>, "value"/span> : {
"py" : "python"。
"js" : "javascript"。
"txt" : "平原",
"md" : "markdown"。
"cs" : "csharp".
}},
"noEditTypes"/span>: {"_type"/span> : "set"/span>, "value"/span> : ["pdf"/span>, "jpg"/span>, "jpeg"/span>, "png"]}。
}
而這里是python代碼:
@staticmethod。
def configParser()。
with open("data/data.json"/span>, "r"/span>) as f:
data = json.load(f).get("Config")
outData={}。
for i in data:
valTypeName = data[i].get("_type"/span>)
if valTypeName == "set":
valType = set: valType = "set".
elif valTypeName == "str":
valType = str: valType = "str".
elif valTypeName == "int":
valType = int: valType = "int".
elif valTypeName == "list":
valType = list: valType = "list": valType = "list".
elif valTypeName == "dict":
valType = dict: valType = "dict".
else:
raise Exception("未知型別。{}".format(valTypeName))
valvalue = data[i].get("value")
outData[i] = valType(valvalue)
return outData
我想如果你對這段代碼稍作修改,它也能滿足你的預期用途。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/310484.html
標籤:
