反序列化 json 以使用字典 System.Text.Json 对象

deserialize json to object with a dictionary System.Text.Json

我正在处理 .Net 6.0 项目,我想从 Newtonsoft.Json 迁移到 System.Text.Json。到目前为止,大部分工作正常,但以下内容除外:

我知道了 json:

[
   {
      "Key":"ValidateRequired",
      "LocalizedValue":{
         "fr-FR":"Ce champ est obligatoire.",
         "en-GB":"This field is required.",
         "nl-BE":"Dit is een verplicht veld.",
         "de-DE":"Dieses Feld ist ein Pflichtfeld."
      }
   },
   {
      "Key":"ValidateEmail",
      "LocalizedValue":{
         "fr-FR":"Veuillez fournir une adresse électronique valide.",
         "en-GB":"Please enter a valid email address.",
         "nl-BE":"Vul hier een geldig e-mailadres in.",
         "de-DE":"Geben Sie bitte eine gültige E-Mail-Adresse ein."
      }
   },
   {
      "Key":"ValidateUrl",
      "LocalizedValue":{
         "fr-FR":"Veuillez fournir une adresse URL valide.",
         "en-GB":"Please enter a valid URL.",
         "nl-BE":"Vul hier een geldige URL in.",
         "de-DE":"Geben Sie bitte eine gültige URL ein."
      }
   }
]

我正在尝试将其存储到以下内容中:

public class Translations
{
    public string Key { get; set; }

    public Dictionary<string, string> LocalizedValue = new();
}

当我使用 Newtonsoft.JSON 进行反序列化时,字典会很好地填充 LocalizedValue

中的值
jsonlocalization = Newtonsoft.Json.JsonConvert.DeserializeObject<List<Translations>>(jsonString);

但是当我尝试使用 System.Text.Json 时,字典仍然是空的

jsonlocalization = System.Text.Json.JsonSerializer.Deserialize<List<Translations>>(jsonString);

如何使用 System.Text.Json 和填充字典?

System.Text.Json 库不会反序列化为字段。如果您将 class 更改为使用 属性,您的示例 JSON 将按预期进行反序列化。

public class Translations
{
    public string Key { get; set; }
    public Dictionary<string, string> LocalizedValue { get; set; } = new();
}