C#-对象列表的反序列化,不';t反序列化继承的属性
我在尝试反序列化对象列表时遇到问题。除基类“BusinessObjectBaseId”继承的属性外,对象中的所有属性都是反序列化的。为什么“Id”属性不能反序列化?(以下是我的代码/工作流程) 基数: 对象:C#-对象列表的反序列化,不';t反序列化继承的属性,c#,json,json.net,deserialization,C#,Json,Json.net,Deserialization,我在尝试反序列化对象列表时遇到问题。除基类“BusinessObjectBaseId”继承的属性外,对象中的所有属性都是反序列化的。为什么“Id”属性不能反序列化?(以下是我的代码/工作流程) 基数: 对象: public class NameAssociation : BusinessObjectBaseId { [DataMember] public string Name { get; set; } } Json对象: [{"Name":"Joe","Id":"10eea
public class NameAssociation : BusinessObjectBaseId
{
[DataMember]
public string Name { get; set; }
}
Json对象:
[{"Name":"Joe","Id":"10eea25b-16aa-42d6-950a-4c28cb0537f4"},{"Name":"Fred","Id":"a913f4b4-1c82-4d19-ade8-949227ac7d08"}]
我呼吁:
List<NameAssociation> list = JsonConvert.DeserializeObject<List<NameAssociation>>(jsonData);
您已经从基类中省略了
[DataContract]
属性。该代码再现了该问题:
namespace StackOverflow45198156
{
class Program
{
static void Main(string[] args)
{
string json = "[{\"Name\":\"Joe\",\"Id\":\"10eea25b-16aa-42d6-950a-4c28cb0537f4\"},{\"Name\":\"Fred\",\"Id\":\"a913f4b4-1c82-4d19-ade8-949227ac7d08\"}]";
var list = JsonConvert.DeserializeObject<List<NameAssociation>>(json);
}
}
public abstract class BusinessObjectBaseId
{
[DataMember]
public Guid Id { get; set; }
}
[DataContract]
public class NameAssociation : BusinessObjectBaseId
{
[DataMember]
public string Name { get; set; }
}
}
或者完全省略所有
[DataContract]
和[DataMember]
属性。您已经从基类中省略了[DataContract]
属性。该代码再现了该问题:
namespace StackOverflow45198156
{
class Program
{
static void Main(string[] args)
{
string json = "[{\"Name\":\"Joe\",\"Id\":\"10eea25b-16aa-42d6-950a-4c28cb0537f4\"},{\"Name\":\"Fred\",\"Id\":\"a913f4b4-1c82-4d19-ade8-949227ac7d08\"}]";
var list = JsonConvert.DeserializeObject<List<NameAssociation>>(json);
}
}
public abstract class BusinessObjectBaseId
{
[DataMember]
public Guid Id { get; set; }
}
[DataContract]
public class NameAssociation : BusinessObjectBaseId
{
[DataMember]
public string Name { get; set; }
}
}
或者完全省略所有的
[DataContract]
和[DataMember]
属性。这可能是因为JSON Id中是字符串,而DTO中是GUID,请尝试将其更改为字符串,看看是否有效。理想情况下,您希望DTO与json 100%匹配,然后将DTO映射到域对象。这可能是因为在json Id中是一个字符串,在DTO中是一个GUID,请尝试将其更改为字符串,然后查看它是否有效。理想情况下,您希望DTO与json 100%匹配,然后将DTO映射到域对象。
namespace StackOverflow45198156
{
class Program
{
static void Main(string[] args)
{
string json = "[{\"Name\":\"Joe\",\"Id\":\"10eea25b-16aa-42d6-950a-4c28cb0537f4\"},{\"Name\":\"Fred\",\"Id\":\"a913f4b4-1c82-4d19-ade8-949227ac7d08\"}]";
var list = JsonConvert.DeserializeObject<List<NameAssociation>>(json);
}
}
public abstract class BusinessObjectBaseId
{
[DataMember]
public Guid Id { get; set; }
}
[DataContract]
public class NameAssociation : BusinessObjectBaseId
{
[DataMember]
public string Name { get; set; }
}
}
[DataContract]
public abstract class BusinessObjectBaseId
{
[DataMember]
public Guid Id { get; set; }
}