2013-05-29 44 views
2

我有一個自定義對象的列表,其中包含兩個需要序列化爲JSON的屬性。這裏是對象:從列表<T>序列化JSON和顯示值

public class IndexData 
{ 
    public string ColumnName { get; set; } 
    public string Data { get; set; } 
} 

我需要的JSON的列表要返回這樣的:

{ "IndexData" : [ 
    { "Column1": "Data1", 
     "Column2": "Data2" 
    } 
    ] 
} 

這可能嗎?

+0

@stringpoet,你可以澄清其中 「列1」 和 「數據1」 從何而來?這些是您的列表中兩個IndexData實例的值嗎? – jstromwick

回答

2
List<IndexData> list = new List<IndexData>() 
{ 
    new IndexData(){ColumnName="column1",Data="data1"}, 
    new IndexData(){ColumnName="column2",Data="data2"}, 
}; 

//Using Json.Net 
var json1 = JsonConvert.SerializeObject(
       new {IndexData=list.ToDictionary(x => x.ColumnName, x => x.Data)}); 
//Using JavaScriptSerializer 
var json2 = new JavaScriptSerializer().Serialize(
       new { IndexData = list.ToDictionary(x => x.ColumnName, x => x.Data) }); 
+1

這完全是我在找的東西(我用'JavaScriptSerializer')。很好,謝謝。 – stringpoet

0

使用JavaScriptSerializer

var indexdata = new IndexData(); 
var json = new JavaScriptSerializer().Serialize(indexdata); 

OR DataContractJsonSerializer

MemoryStream s = new MemoryStream(); 
DataContractJsonSerializer ser = new DataContractJsonSerializer(typeof(IndexData)); 
s.Position = 0; 
StreamReader sr = new StreamReader(s); 
var json = sr.ReadToEnd(); 
0

我的Json.Net

一個大風扇可以使用SerializeObject調用簡單的序列化你的對象:

var list = new List<IndexData> {new IndexData {ColumnName = "Foo", Data = "Bar"}}; 

var output = JsonConvert.SerializeObject(list); 

output將被設置爲

[{"ColumnName":"Foo","Data":"Bar"}] 
+0

但是OP想要'{Foo:Bar}' – I4V