我正在使用C#.netcore创建一个WebAPI。我有一种方法可以根据文件ID从URL获取文件流(不同类型)
function async Task<T> GetFile(string id) {
HttpRequestMessage request = new HttpRequestMessage();
request.RequestUri = new Uri("serverURL" + id);
request.Method = HttpMethod.Get;
HttpResponseMessage response = await httpClient.SendAsync(request,
HttpCompletionOption.ResponseContentRead, cancelToken);
var result = await response.Content.ReadAsStringAsync();
return JsonConvert.DeserializeObject<T>(result);
}
我想将结果返回到这样的模型中
public class FileModel
{
public HttpResponseMessage File { get; set; }
}
之后,我将结果转换为base64以获取文件。
我收到此错误 解析值时遇到意外字符:B.路径”,第0行,位置0 因为JsonConvert无法将结果转换为我的FileModel类。我不能在方法中使用HttpResponseMessage,该方法应该是通用的。
谢谢
答案 0 :(得分:0)
您是否检查了Json的格式是否正确。 看来,您的“结果”格式不正确。
JsonConvert.DeserializeObject(result)需要正确的Json,否则它将返回错误。
答案 1 :(得分:0)
您的FileModel不应具有HttpResponseMessage类型的属性,因为这不是Json反序列化器将返回的属性。它将尝试将JSON转换为基于您正在使用的通用模型(T)的类。通用模型(T)的结构必须与要返回的JSON相匹配。
例如,如果您的json看起来像这样:
{
field1: "value1",
field2: 123
}
您的模型应如下所示
public class MyModel {
string field1 { get; set;}
int field2 { get; set;}
}
如果api调用的结果是不同的模型,则需要为每个调用创建一个新模型。您不应该尝试对所有呼叫使用相同的模型。