.NET[C#]如何将RestSharp 获取到的请求结果JSON字符串转换成对应的对象?

.NET 作者: Rector 897阅读 0评论 0收藏 收藏本文

郑重申明:本文未经许可,禁止任何形式转载

.NET[C#]如何将RestSharp 获取到的请求结果JSON字符串转换成对应的对象?

问题描述

比如通过RestSharp模拟请求获取到了如下的JSON字符串:

{
    "id" : 77239923,
    "username" : "UzEE",
    "email" : "uzee@email.net",
    "name" : "Uzair Sajid",
    "twitter_screen_name" : "UzEE",
    "join_date" : "2012-08-13T05:30:23Z05+00",
    "timezone" : 5.5,
    "access_token" : {
        "token" : "nkjanIUI8983nkSj)*#)(kjb@K",
        "scope" : [ "read", "write", "bake pies" ],
        "expires" : 57723
    },
    "friends" : [{
        "id" : 2347484",
        "name" : "Bruce Wayne"
    },
    {
        "id" : 996236,
        "name" : "Clark Kent"
    }]
}

需要转换成的对象包括:

class AccessToken 
{
    public string Token { get; set; }
    public int Expires { get; set; }
    public string[] Scope { get; set; }
    public string Secret { get; set; } /* may not always be returned */
}

class User
{
    public ulong Id { get; set; }
    public string UserName { get; set; }
    public string Email { get; set; }
    public string Name { get; set; }
    public string TwitterScreenName { get; set; }
    public DateTime JoinDate { get; set; }
    public float Timezone { get; set; }
    public bool IsOnline { get; set; } /* another field that might be blank e.g. */

    public AccessToken AccessToken { get; set; }

    public List<User> Friends { get; set; }
}

应该如何将 JSON 字符器转换成 User 对象呢?

方案一

使用 JSON.NET (https://www.newtonsoft.com/json) 组件,如:

var result = obj.ToObject<MyClass>();

public class MyClass 
{ 
    [JsonProperty("date_field")]
    public DateTime MyDate {get;set;}
}

方案二

使用 JsonConvert.DeserializeObject(jtoken.ToString(), targetType);

本例中演示:

var obj = (JObject)JsonConvert.DeserializeObject(json);
Type type = typeof(int);
var i1 = System.Convert.ChangeType(obj["id"].ToString(), type);
var i2 = JsonConvert.DeserializeObject(obj["id"].ToString(), type);

阅读了该文章的人还浏览了...

本文永久链接码友网 » .NET[C#]如何将RestSharp 获取到的请求结果JSON字符串转换成对应的对象?

发布于: 2018-01-05 09:47:27
分享扩散:

文章评论

获取验证码