C# 4.0 使用Json.Net反序列化GUI以扩展对象会丢失类型,并且是字符串
鉴于以下类别:C# 4.0 使用Json.Net反序列化GUI以扩展对象会丢失类型,并且是字符串,c#-4.0,serialization,guid,json.net,expandoobject,C# 4.0,Serialization,Guid,Json.net,Expandoobject,鉴于以下类别: public class Entity { public Guid UniqueId { get; set; } } 以下测试失败: [Test] public void GuidTest() { var entity = new Entity { UniqueId = Guid.NewGuid() }; var entityJson = JsonConvert.Se
public class Entity
{
public Guid UniqueId
{
get;
set;
}
}
以下测试失败:
[Test]
public void GuidTest()
{
var entity = new Entity { UniqueId = Guid.NewGuid() };
var entityJson = JsonConvert.SerializeObject(entity);
dynamic reconstitutedEntity = JsonConvert.DeserializeObject<ExpandoObject>(entityJson);
Assert.That(reconstitutedEntity.UniqueId, Is.EqualTo(entity.UniqueId));
}
[测试]
公共void GuidTest()
{
var entity=新实体{UniqueId=Guid.NewGuid()};
var entityJson=JsonConvert.SerializeObject(实体);
dynamic restructuredentity=JsonConvert.DeserializeObject(entityJson);
断言(restructuredentity.UniqueId,Is.EqualTo(entity.UniqueId));
}
错误如下:
预计:35ac3081-07cb-41dd-bf40-22e2ff47863c
但是是:“35ac3081-07cb-41dd-bf40-22e2ff47863c”
这是Json.Net中的错误还是预期的行为?如何使用ExpandoObject通过测试
如果我用实体替换ExpandoObject,它就可以正常工作。我是否必须编写自定义JsonConverter?我尝试过这样做,但出于某种原因,尽管CanConvert和WriteJson(成功)调用,但ReadJson从未被调用。您解决了这个问题吗?我也有同样的问题。我不记得了,因为那是将近8年前的事了。哈话虽如此,可能不是因为我可能会回来回答我自己的问题。