C#在JSON对象中序列化JSON对象

时间:2013-09-16 10:05:40

标签: c# javascript json

我有这些实体:

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()反序列化是否正确?

或者我必须采取另一种方式吗?

如果我能拥有一个可以直接访问这些名称的对象,那么这些值就会很棒!

2 个答案:

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