C#JsonSerializationException

时间:2018-08-29 17:02:12

标签: c# end-to-end

我在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; } 
} 

1 个答案:

答案 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);