2

JSON にシリアル化する必要がある 2 つのプロパティを持つカスタム オブジェクトのリストがあります。オブジェクトは次のとおりです。

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

リストが次のように返されるようにするには、JSON が必要です。

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

これは可能ですか?

4

3 に答える 3

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) });
于 2013-05-29T18:14:34.603 に答える
0

使用するJavaScriptSerializer

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

またDataContractJsonSerializer

MemoryStream s = new MemoryStream();
DataContractJsonSerializer ser = new DataContractJsonSerializer(typeof(IndexData));
s.Position = 0;
StreamReader sr = new StreamReader(s);
var json = sr.ReadToEnd();
于 2013-05-29T18:09:05.537 に答える
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"}]
于 2013-05-29T18:15:08.900 に答える