我有一個要求使用C#對象生成以下JSON:C#JSON對象的動態變量
現在使用HttpResponseMessage(網頁API)進出口所以我不需要任何JSON.NET從我的目標做任何額外的轉換。
returnVal = Request.CreateResponse(HttpStatusCode.OK, new Model.Custom.JsonResponse
{
data = root,
success = true
});
這是我需要生成JSON:
'data': [{
'some var 1': 'value A',
'some var 2': 'value B',
'some var 3': 'value C'
}, {
'some var 1': 'value A',
'some var 2': 'value B',
'some var 3': 'value C'
}, {
'some var 1': 'value A',
'some var 2': 'value B',
'some var 3': 'value C'
}]
哪裏'some var'
是動態的。
現在我試圖用List<Dictionary<string,object>>();
但問題是,這種方法我只能產生這樣的:
'data': [{
'some var 1': 'value A'
}, {
'some var 1': 'value A'
}, {
'some var 1': 'value A'
}]
我的實際類是這樣的:
public class RootObject {
public bool success {
get;
set;
}
public List < Dictionary < string, object >> jsonData {
get;
set;
}
}
var root = new RootObject();
root.jsonData = new List < Dictionary < string, object >>();
// create new record
var newRecord = new Dictionary < string,object >();
newRecord.Add("1", "H"); // 1 = some var 1, H = value A
// add record to collection
root.jsonData.Add(newRecord);
// create new record
newRecord = new Dictionary < string, object >();
newRecord.Add("5", "L");
// add record to collection
root.jsonData.Add(newRecord);
因此,這將輸出:
'data': [{
'1': 'H'
}, {
'5': 'L'
}]
任何線索?由於
這將只輸出{ 「1」: 「H」},{ 「2」: 「I」},{ 「3」: 「J」},而不是{ 「1」 :「H」,「2」:「I」,「3」:「J」} – VAAA
因爲在newRecord之後,我必須將newRecord添加到Dictionary List。 – VAAA
看起來你正在得到糟糕的DataContractJsonSerializer的行爲。您可能想嘗試將其替換爲JSON.NET:http://blogs.msdn.com/b/henrikn/archive/2012/02/18/using-json-net-with-asp-net-web- api.aspx –