C# 如何将JSON值映射到不同名称的模型属性

C# 如何将JSON值映射到不同名称的模型属性,c#,.net,json,api,c#-4.0,C#,.net,Json,Api,C# 4.0,如何使用.NET 4.5.1 framework和C,使用HttpClient库将JSON属性值映射到不同名称的模型属性 我正在使用来自Weather Underground的API,我创建了一个控制台应用程序,只是为了在迁移到ASP.NET MVC 5 web应用程序之前对其进行测试 我的部分JSON结果: { "response": { "version":"0.1", "termsofService":"http://www.wunderg

如何使用.NET 4.5.1 framework和C,使用HttpClient库将JSON属性值映射到不同名称的模型属性

我正在使用来自Weather Underground的API,我创建了一个控制台应用程序,只是为了在迁移到ASP.NET MVC 5 web应用程序之前对其进行测试

我的部分JSON结果:

{
     "response": {
          "version":"0.1",
          "termsofService":"http://www.wunderground.com/weather/api/d/terms.html",
          "features": {
               "conditions": 1
          }
     }
}
这是一个非常基本的示例,如何将JSON中返回的termsofservice值映射到响应类中的Terms属性?如果可能的话,我希望停留在上面使用的库的范围内,而不是解析为JSON.NET之类的第三方库。如果不能做到这一点,那么我将研究第三方库


我可能有属性与JSON中返回的数据属性同名的类,但我喜欢在命名属性时坚持最佳做法,并且属性需要有合适的名称。

可能有点晚了,但仅供将来参考

您可以使用System.Runtime.Serialization中的DataMember属性映射json变量名。将该类标记为DataContract。注意,使用这种方法,要从json字符串映射的每个变量都必须具有DataMember属性,而不仅仅是具有自定义映射的变量

using System.Runtime.Serialization;

[DataContract]
public class Response
{
    [DataMember(Name = "conditions")]
    public string Terms { get; set; }

    [DataMember]
    public string Foo { get; set; }

    public int Bar { get; set; } // Will not be mapped
}

也许有点晚了,但供将来参考

您可以使用System.Runtime.Serialization中的DataMember属性映射json变量名。将该类标记为DataContract。注意,使用这种方法,要从json字符串映射的每个变量都必须具有DataMember属性,而不仅仅是具有自定义映射的变量

using System.Runtime.Serialization;

[DataContract]
public class Response
{
    [DataMember(Name = "conditions")]
    public string Terms { get; set; }

    [DataMember]
    public string Foo { get; set; }

    public int Bar { get; set; } // Will not be mapped
}

在代码中不显示任何json库。您使用什么来反序列化json?为什么会对json进行投票?查看代码,您将看到它:Condition=await response.Content.ReadAsAsync;在代码中不显示任何json库。您使用什么来反序列化json?为什么会对json进行投票?查看代码,您将看到它:Condition=await response.Content.ReadAsAsync;HttpClient会自动识别这些属性吗?我认为问题中的HttpClient是由Asp.Net.WebApi.Client包扩展的,该包在内部使用Newtonsoft.Json。因此,我想我们可以使用[JsonPropertyPropertyName=xxxx]属性来解决这个问题。在这里,HttpClient会自动识别这些属性吗?我认为问题中的HttpClient是由Asp.Net.WebApi.Client包扩展的,该包在内部使用Newtonsoft.Json。所以我想我们可以使用[JsonPropertyPropertyName=xxxx]属性来解决这个问题
using System.Runtime.Serialization;

[DataContract]
public class Response
{
    [DataMember(Name = "conditions")]
    public string Terms { get; set; }

    [DataMember]
    public string Foo { get; set; }

    public int Bar { get; set; } // Will not be mapped
}