首页 / .NET / 正文

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

5296 发布于: 2018-01-05 读完约需6分钟

.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);

版权声明:本作品系原创,版权归码友网所有,如未经许可,禁止任何形式转载,违者必究。

上一篇: [SQL Server]SQL Server中如何写类似的IF THEN的查询(SELECT)语句?

下一篇: .NET[C#]如何查看RestSharp请求(Request)和响应(Response)的原始头部信息(Headers)?

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

分享扩散:

发表评论

登录用户才能发表评论, 请 登 录 或者 注册