反序列化 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();
}
我正在处理 .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();
}