c# - 使用 RestSharp 反序列化 JSON

标签 c# json rest

我正在使用 RetSharphttp://api.weatherapi.com/v1/current.json 发出请求,如下所示:

        var request = new RestSharp.Serializers.Newtonsoft.Json.RestRequest();
        request.AddHeader("content-type", "application/json");
        var client = new RestClient(URL + urlParameters);
        client.Proxy = WebRequest.DefaultWebProxy; // I was led to believe this will fix my problem of my requests taking minutes on end to execute, but it didn't that much.
        var queryResult = client.Execute(request).Content;
        var response = JsonConvert.DeserializeObject<CurrentJsonResponse>(queryResult);

这工作正常,但我不喜欢我必须单独调用 JsonConvert,而且按理说,RestSharp 应该内置对这种东西的支持。

我尝试了以下方法:

        var response = client.Execute<CurrentJsonResponse>(request).Data; // returns a CurrentJsonResponse object with null properties.

        request.JsonSerializer = new NewtonsoftJsonSerializer(); // I put it at the very start, but doesn't help.

        var jsonDeserializer = new JsonDeserializer();
        client.AddHandler("application/json", jsonDeserializer); // Second verse, same as the first.

        var response = client.Execute<object>(request).Data; // Correctly creates an annonymous object that has the right properties/information but it's not exactly what I'm going for. As I wanted it strongly-typed.

没有任何作用。如何显式反序列化使用 RestSharp 获得的 json 响应,而不需要单独调用 Newtonsoft。我已经下载了 RestSharp.Serializers.Newtonsoft.Json nuget。

最佳答案

在第二次尝试中尝试更改

 var jsonDeserializer = new JsonDeserializer();
 client.AddHandler("application/json", jsonDeserializer);

client.AddHandler("application/json", () => new RestSharp.Serializers.Newtonsoft.Json.NewtonsoftJsonSerializer());

并调用:

var response = client.Execute<CurrentJsonResponse>(request).Data;

关于c# - 使用 RestSharp 反序列化 JSON,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62486834/

相关文章:

python - 如何使用dictionary/json在yaml中添加 '-'?

rest - 外部用户的 SharePoint REST(和 CSOM)失败

用于更新资源的单个属性的 REST Api 设计

c# - try-finally 中的 Response.Redirect()

c# - 无法加载 DLL “OraOps10.dll”

C# 等效于 PHP http_build_query

java - 在 Java 中处理 REST 结果 (json) 中不一致的数据类型

javascript - 将 JSON 对象转换回 JavaScript 的字符串

python - 如何在 Django 中通过 PUT 请求处理文件上传?

c# - 通过 SMS 网关发送电子邮件,但未收到