2013-07-05 176 views
0

我想獲得一個結構在JSON:C#對象到JSON轉換

{ 
    'for-sale': { name: 'For Sale', type: 'folder' }, 
    'vehicles': { name: 'Vehicles', type: 'folder' }, 
    'rentals': { name: 'Rentals', type: 'folder' }, 
} 

我可以用JavaScriptSerializer到.NET類轉換成JSON格式。但女巫結構我的班級必須具備以上樣本數據?

+0

不是一個確切的重複,但看看[JavaScriptSerializer.Deserialize - 如何更改字段名稱](http://stackoverflow.com/questions/1100191/javascriptserializer-deserialize-how-to-change-field-名)。 – CodeCaster

回答

3

你有沒有嘗試過這樣的:

public class MyClass 
{ 
    [JsonProperty("for-sale")] 
    public IList<Item> forSale { get; set; } 
    public IList<Item> vehicles { get; set; } 
    public IList<Item> rentals { get; set; } 
} 

public class Item 
{ 
    public string name { get; set; } 
    public string type { get; set; } 
} 

您也可以使用DataContractJsonSerializer,而是你可以使用以下類:像你需要一個

var theStructure = Dictionary<string, Dictionary<string,string>>() 

[DataContract] 
public class MyClass 
{ 
    [DataMember(Name = "for-sale")] 
    public IList<Item> forSale { get; set; } 
    [DataMember] 
    public IList<Item> vehicles { get; set; } 
    [DataMember] 
    public IList<Item> rentals { get; set; } 
} 

[DataContract] 
public class Item 
{ 
    [DataMember] 
    public string name { get; set; } 
    [DataMember] 
    public string type { get; set; } 
} 
+2

你將不得不有forSale或東西作爲待售不是一個財產的有效名稱。 –

+0

@尼爾,的確,我會糾正它。 –

+0

如果您想添加額外的項目,此方法可能會導致問題。 –

0

看起來並添加數據,如:

theStructure.Add("for-sale", new Dictionary<string, string>() {("For Sale", "folder")}); 
+1

當有簡單的方法將JSON映射到POCO時,我不會採用這種方法。 –