我有这些实体:
public class Product
{
public string Code {get;set;}
public string Name {get;set;}
public ICollection<Pack> Packs {get;set;}
}
public class Pack
{
public string Colour {get;set;}
public string Moq {get;set;}
}
我的json对象:
var products = [{
code: 1243123,
name: "Gel",
packs: [{
color: "blue",
moq: 10
}]
}];
注意命名差异,即案例和美国拼写的颜色。 JavaScriptConvert.DeserializeObject()
反序列化是否正确?
或者我必须采取另一种方式吗?
如果我能拥有一个可以直接访问这些名称的对象,那么这些值就会很棒!
答案 0 :(得分:2)
如果您使用JSON.NET之类的内容,则可以使用属性来控制序列化,例如:
public class Pack
{
[JsonProperty("color")]
public string Colour {get;set;}
[JsonProperty("moq")]
public string Moq {get;set;}
}
另外,根据您的预期输出,我认为您的Product
课程应如下所示:
public class Product
{
[JsonProperty("code")]
public long Code {get;set;}
[JsonProperty("name")]
public string Name {get;set;}
[JsonProperty("packs")]
public Pack[] Packs {get;set;}
}
注意代码和包类型。
答案 1 :(得分:1)
如果您使用DataContractJsonSerializer
,则可以将属性放入属性,在生成/解析的JSON中为它们指定不同的名称:
[DataContract]
public class Pack
{
[DataMember(Name = "color")]
public string Colour {get;set;}
[DataMember(Name = "moq")]
public string Moq {get;set;}
}