使用RestSharp

时间:2018-01-07 22:27:37

标签: c# json restsharp

我正在从事Xamarin项目。基本上,我想从API接收数据并显示它。我正在使用RestSharp。

以下是我的API请求代码。

string test;
test = "yAHO0SsAmjJi1qTZGcK3sMHHIhWTN4Yq";
string s = string.Format("http://192.168.1.4:3116/api/user/getuser/{0}", test);

client = new RestClient(s);
request = new RestRequest(Method.GET);
request.AddHeader("Cache-Control", "no-cache");
request.AddHeader("Content-Type", "application/json");
IRestResponse response2 = client.Execute(request);

这是我收到的JSON对象。

{
    "id": 1,
    "token": "yAHO0SsAmjJi1qTZGcK3sMHHIhWTN4Yq",
    "email": "some email",
    "password": "testpassword",
    "currentCompany": "some company",
    "currentRole": "Software Developer",
    "date": "Something",
    "name": "Some name",
    "lastName": "Some surname",
    "headLine": "Some text",
    "education": "University of Hotshots",
    "country": "Who cares",
    "imageLocation": "Some url"
}

这是我使用网站为其创建的课程:json2csharp.com /

class User
{
    public int Id { get; set; }
    public string Token { get; set; }
    public string Email { get; set; }
    public string Password { get; set; }
    public string CurrentCompany { get; set; }
    public string CurrentRole { get; set; }
    public string Date { get; set; }
    public string Name { get; set; }
    public string LastName { get; set; }
    public string HeadLine { get; set; }
    public string Education { get; set; }
    public string Country { get; set; }
    public string ImageLocation { get; set; }
}

如何更改我的代码,以便我可以反序列化对上述类的实例的响应,以便我可以使用它来处理数据?我在这里阅读了帖子并尝试了解决方案,但它们似乎并没有为我工作。所以,我发布了这个问题。

使用数组也是一种选择;我可以用它。有关参考,请参阅PHP的$array = json_decode($somepostrequest, true),它将JSON对象转换为关联数组。您只需拨打对象$array['email']即可。

2 个答案:

答案 0 :(得分:3)

使用Newtonsoft.JSON将JSON反序列化为对象(反之亦然)。它非常简单,免费使用。还有一个NugetPackage可供选择。
安装后,您只需要以下行即可获得所需对象。

User userObj = Newtonsoft.Json.JsonConvert.DeserializeObject<User>(jsonString);

答案 1 :(得分:1)

尝试使用client.Execute()的泛型重载。 RestSharp将使用其内部序列化程序来反序列化JSON:

var response2 = client.Execute<User>(request);
User user = response2.Data;

此示例显示在RestSharp的GitHub网站的Recommended Usage维基页面上。

当然,RestSharp的内部序列化器并不像Json.Net那样功能齐全,但它看起来并不像你需要的任何东西。