相当于.NET中的JSON.NET JsonProperty

nav*_*een 2 asp.net

我有一个返回的JSON

{
    "access_token": "",
    //....
}
Run Code Online (Sandbox Code Playgroud)

我想把它映射到AccessToken而不是access_token.

使用JSON.NET,可以编写

[JsonProperty("access_token")]
public string AccessToken{ get; set; }
Run Code Online (Sandbox Code Playgroud)

ASP.NET框架中是否存在等价物?我不想要JSON.NET依赖.

Yur*_* A. 5

您需要使用DataContractJsonSerializer和DataContract,DataMember如下:

public static class SerializationHelper
{
    /// <summary> Deserializes Json string of type T. </summary>
    public static T DeserializeJsonString<T>(string jsonString)
    {
        T tempObject = default(T);

        using (var memoryStream = new MemoryStream(Encoding.Unicode.GetBytes(jsonString)))
        {
            var serializer = new DataContractJsonSerializer(typeof(T));
            tempObject = (T) serializer.ReadObject(memoryStream);
        }

        return tempObject;
    }
}


[DataContract]
public class DataObject
{
    [DataMember(Name = "user_name")]
    public string UserName { get; set; }

    [DataMember(Name = "access_token")]
    public string AccessToken { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

用法:

var json = "{\"user_name\":\"John Doe\",\"access_token\":\"ABC123\"}";
var data = SerializationHelper.DeserializeJsonString<DataObject>(json);
Run Code Online (Sandbox Code Playgroud)