C#数据反序列化从JSON字符串 - 变量路由

22 浏览
0 Comments

C#数据反序列化从JSON字符串 - 变量路由

我正在使用一个简单的REST API。我通常在我的.Net环境中使用HttpClient,并使用Newstonsoft JSON.NET将JSON响应反序列化为我创建的类。

我通常只需使用与JSON变量相同的名称创建我的变量,这样它们就可以正确映射和反序列化。

然而,我正在使用的当前API中的变量并不那么有意义,所以我想知道是否可能像下面这样做,这样我就可以正确命名我的类变量,但仍然可以进行反序列化映射。

[Serializable(Name="param1")]
public string CompanyName { get; set; }

0
0 Comments

C# Data Deserialization from JSON string - Variable routing

在C#中,当我们从JSON字符串进行数据反序列化时,有时候会遇到变量路由的问题。这种问题的出现通常是由于JSON字符串中的属性名称与C#类中的变量名称不一致造成的。为了解决这个问题,我们可以使用JsonProperty属性或JsonProperty(PropertyName)属性。

JsonProperty属性用于指定JSON字符串中属性的名称,以便与C#类中的变量名称进行匹配。例如,我们可以将JsonProperty属性应用于CompanyName变量,指定其在JSON字符串中的名称为"param1":

[JsonProperty("param1")]
public string CompanyName {get; set;}

另一种解决方法是使用JsonProperty(PropertyName)属性。该属性与JsonProperty属性的作用相同,可以指定JSON字符串中属性的名称。但是,JsonProperty(PropertyName)属性的语法略有不同。例如,我们可以将JsonProperty(PropertyName)属性应用于CompanyName变量,指定其在JSON字符串中的名称为"param1":

[JsonProperty(PropertyName="param1")]
public string CompanyName {get; set;}

通过使用上述任一属性,我们可以确保JSON字符串中的属性与C#类中的变量正确匹配,从而成功进行数据反序列化。

总结起来,当我们在C#中进行JSON字符串的数据反序列化时,如果遇到变量路由的问题,即JSON字符串中的属性名称与C#类中的变量名称不一致,我们可以使用JsonProperty属性或JsonProperty(PropertyName)属性来解决这个问题。通过指定属性的名称,我们可以确保JSON字符串中的属性与C#类中的变量正确匹配,从而成功进行数据反序列化。

0