[英]Mapping a certain JSON value to Enum value C#
我正在為Stack Exchange API創建類。 filter_object類型包含成員filter_type
,該成員將是safe
, unsafe
或invalid
。 所以我創建了一個這樣的枚舉:
[JsonConverter(typeof(StringEnumConverter))]
public enum FilterType
{
safe,
@unsafe, // Here lies the problem.
invalid
}
由於unsafe
是一個關鍵字,我不得不為它添加一些前綴。 但是,如何使值“不安全”自動映射到@unsafe
? 示例JSON:
{
"filter": "....",
"filter_type": "unsafe",
"included_fields": [
"...",
"....",
"....."
]
}
我如何反序列化它,以便filter_type
自動轉換為FilterType.@unsafe
?
更新 - 解決:
在標識符之前使用@符號可以使其與關鍵字相同。 即使@出現在intellisense中,它也能正常工作。
您可以像這樣使用JsonProperty
public enum FilterType
{
safe,
[JsonProperty("unsafe")]
@unsafe, // Here lies the problem.
invalid
}
然后它將正常工作
class MyClass
{
public FilterType filter_type { get; set; }
}
public class Program
{
public static void Main()
{
var myClass = JsonConvert.DeserializeObject<MyClass>(json);
var itsUnsafe = myClass.filter_type == FilterType.@unsafe;
Console.WriteLine(itsUnsafe);
}
public static string json = @"{
""filter"": ""...."",
""filter_type"": ""unsafe"",
""included_fields"": [
""..."",
""...."",
"".....""
]
}";
}
輸出是:
真正
您可以在此處查看示例: https : //dotnetfiddle.net/6sb3VY
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.