我在C#中使用EndToEnd测试时遇到了一些问题。这是我来自Microsoft网站的代码,其中包含端到端测试的示例。
var email = "mail1@testmail.com";
var response = await Client.GetAsync($"User/{email}");
response.EnsureSuccessStatusCode();
var responseString = await response.Content.ReadAsStringAsync();
var user = JsonConvert.DeserializeObject<UserDTO>(responseString);
Assert.Equal(email, user.Email);
运行程序后,出现此异常。当我调试它时-一切都与DeserializeObject兼容。有人可以给我一些联系或提示如何解决这个问题吗?
消息:
Newtonsoft.Json.JsonSerializationException:将值1转换为类型'System.Guid'时出错。路径“ id”,第1行,位置167。 ---- System.ArgumentException:无法从System.Int64强制转换或转换为System.Guid。
public class UserDTO
{
public Guid Id { get; set; }
public string Email { get; set; }
public string Username { get; set; }
public string FullName { get; set; }
public DateTime CreatedAt { get; set; }
}
答案 0 :(得分:0)
每个发布的json字符串将public Guid Id { get; set; }
中的public string Id { get; set; }
属性更改为UserDTO
public class UserDTO
{
public string id { get; set; }
public string email { get; set; }
public string username { get; set; }
public string fullName { get; set; }
public DateTime createdAt { get; set; }
}
然后您可以使用Guid.Parse()
方法将该字符串转换为GUID
var user = JsonConvert.DeserializeObject<UserDTO>(responseString);
Guid newGuid = Guid.Parse(user.id);