c#JSON对象动态变量

时间:2014-07-02 18:04:29

标签: c# json asp.net-web-api idictionary

我需要使用c#对象生成以下JSON:

现在我正在使用HttpResponseMessage(Web 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'
 }]

有任何线索吗?感谢

3 个答案:

答案 0 :(得分:1)

public class MyClass
{
    public List<JObject> data = new List<JObject>();
}

var m = new MyClass();
m.data.Add(new JObject());
m.data.Add(new JObject());

m.data[0]["some var 1"] = "value A";
m.data[0]["some var 2"] = "value B";
m.data[0]["some var 3"] = "value C";

m.data[1]["some var 1"] = "value A";
m.data[1]["some var 2"] = "value B";
m.data[1]["some var 3"] = "value C";

var json = JsonConvert.SerializeObject(m);

<强>输出

{
  "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"
    }
  ]
}

答案 1 :(得分:0)

您只需要在字典中添加更多元素:

newRecord.Add("1", "H");
newRecord.Add("2", "I");
newRecord.Add("3", "J");

答案 2 :(得分:0)

这是我将JSON粘贴到Visual Studio中时得到的结果&#34;作为JSON&#34;:

public class Rootobject
{
    public Datum[] data { get; set; }
}

public class Datum
{
    public string somevar1 { get; set; }
    public string somevar2 { get; set; }
    public string somevar3 { get; set; }
}