我有一个要求使用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 –