簡體   English   中英

將某個JSON值映射到Enum值C#

[英]Mapping a certain JSON value to Enum value C#

我正在為Stack Exchange API創建類。 filter_object類型包含成員filter_type ,該成員將是safeunsafeinvalid 所以我創建了一個這樣的枚舉:

[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.

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