【发布时间】:2018-03-19 08:29:59
【问题描述】:
我想将我的 json 字符串反序列化为我的泛型类。但我想用一种方法做到这一点。当我调用此链接时;
这是我的代码; 它是我的班级:
public class Test
{
public string userId { get; set; }
public string Id { get; set; }
}
它是我的反序列化类:
private static async Task<IRestResponse<T>> MapResponse<T>(HttpResponseMessage response) where T : class
{
var restResponse = new WebApiRestResponse<T>
{
Content = await response.Content.ReadAsStringAsync(),
StatusCode = response.StatusCode
};
try
{
var body = await response.Content.ReadAsStringAsync();
if (response.Content.Headers.ContentType.MediaType == "text/plain")
restResponse.Exception = new RestInteractionException(body);
else
restResponse.Data = JsonConvert.DeserializeObject<List<T>>(body); ;
}
catch (Exception e)
{
restResponse.Exception = e;
}
return restResponse;
}
public interface IRestResponse
{
string Content { get; }
Exception Exception { get; set; }
HttpStatusCode StatusCode { get; }
}
public interface IRestResponse<T> : IRestResponse
{
List<T> Data { get; }
}
https://jsonplaceholder.typicode.com/posts/1
它返回到单个对象。
当我调用此链接时;
https://jsonplaceholder.typicode.com/posts
MapResponse 类将 json 反序列化为泛型类。但有时我调用单个对象,有时我调用列表对象。那么我该如何在这段代码中做到这一点呢?
最好的问候
【问题讨论】:
-
您需要编写实现您所描述的逻辑的代码。或者,您可以提供您尝试过的示例代码,人们可能会在这里为您提供帮助。
-
不发布代码就无法理解您的问题。在 SO 上,人们会利用空闲时间帮助您解决问题。花时间充分描述您的问题并不是要求太多。
-
我分享代码。希望你能理解
-
我做到了。但其返回堆栈溢出错误。当您尝试单个对象时,它会告诉您 System.Collections.Generic.List`1[Item]' 因为该类型需要 JSON 数组(例如 [1,2,3])才能正确反序列化。 dotnetfiddle.net/SgM0LY