Newtonsoft.Json.JsonReaderException:无法将字符串转换为整数2



我目前正处于项目的集成测试阶段,在尝试测试端点以查看数据库是否返回一些任务时遇到了错误。我的域对象如下所示:

public class Task
{
public Guid Id { get; set; }
public string Title { get; set; }
public string Description { get; set; }
[Column(TypeName = "decimal(18,2)")] 
public decimal? InitialPrice { get; set; }
}

我的端点的基本测试代码

[Fact]
public async Task Should_return_All_Tasks_with_ok_statusCode()
{
client.SetFakeBearerToken((object) token);

var response = await client.GetAsync("/api/v1/tasks");
response.StatusCode.Should().Be(HttpStatusCode.OK);
var json = await response.Content.ReadAsStringAsync();
var data = JsonConvert.DeserializeObject<List<Task>>(json);
data.Count.Should().BeGreaterThan(0);
}

当我运行测试时,我得到错误

Newtonsoft.Json.JsonReaderException: Could not convert string to integer: 64fa643f-2d35-46e7-b3f8-31fa673d719b. Path '[0].id', line 1, position 45.

我还尝试过使用ReadAsAsync<列表>((方法,我仍然得到相同的错误。

对im试图测试的端点的api调用将给出:

[
{
"id": "64fa643f-2d35-46e7-b3f8-31fa673d719b",
"title": "Garden Trimming in Lagos Ajah",
"description": "Please my garden needs trimmin, Im in lagos",
"initialPrice": 20.3
}
]

我将感谢的帮助

您将Task类命名为与.Net框架中的System.Threading.Tasks.Task对象相同的对象。System.Threading.Tasks.Task具有int-Id属性。要反序列化的代码实际上是试图将JSON反序列化为System.Threading.Tasks.Task对象。

要解决此问题,您需要重命名Task类(我建议这样做(,或者在调用JsonConvert.DeserializeObject的代码行中指定Task对象的全名,包括命名空间。

最新更新