【发布时间】:2022-06-13 21:18:54
【问题描述】:
我正在从外部 API 检索数据。他们的字段名称之一是“from_address”。所以我把它作为 JsonPropertyName。但这不起作用。我在这个小提琴中重现了这个问题。
public class Program
{
public class FromAddress
{
[JsonPropertyName("name")]
public string Name { get; set; }
[JsonPropertyName("email")]
public string Email { get; set; }
}
public class Email
{
[JsonPropertyName("id")]
public string Id { get; set; }
[JsonPropertyName("from_address")]
public FromAddress FromAddress { get; set; }
}
public static void Main()
{
var str = "{\"from_address\":{\"name\":\"me\",\"email\":\"me@me.me\"},
\"id\":\"the_one\"}";
var result = Newtonsoft.Json.JsonConvert.DeserializeObject<Email>(str);
Console.WriteLine(result.FromAddress != null ? "something" : "nothing"); // nothing
Console.WriteLine(result.Id); // the_one
Console.WriteLine(result.FromAddress.Email); // throws a null reference exception
}
}
我知道问题在于下划线,因为如果我在我的小提琴(在 JsonPropertyName 和变量 str 中)将“from_address”替换为“fromaddress”,它就可以工作。
【问题讨论】:
-
是
JsonPropertyName来自System.Text.Json?在这种情况下,这是错误的属性