簡體   English   中英

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

[英]C# Serialize JSON object within JSON objects

我有這些實體:

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()會正確反序列化嗎?

還是我必須另辟?徑?

如果我只有一個可以直接訪問這些名稱的對象,那么那里的值將是巨大的!

如果使用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;}
}

注意代碼類型。

如果改用DataContractJsonSerializer ,則可以將屬性放入屬性,在生成/解析的JSON中為它們賦予不同的名稱:

[DataContract]
public class Pack
{
    [DataMember(Name = "color")]
    public string Colour {get;set;}

    [DataMember(Name = "moq")]
    public string Moq {get;set;}
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM