вернуть массив массивов вместо массива объектов с json.net

Мне нужно вернуть массив массивов вместо массива объектов для флоат-чарта.

Я могу получить следующее:

data = [{"2012-10": 4140},{"2012-11": 10815},{"2012-12": 10444}];

но нужно (ОБНОВЛЕНИЕ исправлено в следующей строке):

data = [["2012-10", 4140],["2012-11", 10815],["2012-12", 10444]];

Вот С#, который анализирует входящий json из другого источника:

public async Task<ActionResult> Chart(string custid)
   {
        //Get the financial results from DRT
        var response = await DominoJSON.getJSON(custid, "drtHistory", "DRT");

        JArray UOVol = new JArray();

        var array = JArray.Parse(response);
        foreach (var token in array)
        {
            JObject o = JObject.Parse(token.ToString());
            
            int uovol = Convert.ToInt32(o["UOVol"]);
            string uodate = o.SelectToken("DATE").ToString();
            JObject UOItem = new JObject(new JProperty(uodate, uovol));
            UOVol.Add(UOItem);
              
        }

       string resultUO = UOVol.ToString();
       
       ViewBag.UOData = resultUO;

        return View();
    }

И анализируется входящий json:

[
  {
      "DATE":"2012-10",
      "UOVol":4140,
      "FIRev":180,
      "AFRev":692.75,
      "ABRev":2900,
      "OWRev":3791.25,
  },
  {
     
      "DATE":"2012-11",
      "UOVol":10815,
      "FIRev":60,
      "AFRev":170,
      "ABRev":0,
      "OWRev":3037.5,
  },
  {
   
      "DATE":"2012-12",
      "UOVol":10444,
      "FIRev":40,
      "AFRev":514.25,
      "ABRev":1450,
      "OWRev":7500,
  }
]

Я не могу понять, как превратить JObjects в массивы. Я пробовал это с другими подходами, включая использование словаря и списка. Любая помощь или альтернативные решения будут полезны. Использование VS2013, mvc 5 и EF 6.


person user2557714    schedule 13.12.2013    source источник
comment
["2012-10": 4140] не является допустимым JSON.   -  person Rawling    schedule 13.12.2013
comment
JSON, который, как вы говорите, вам нужен, недействителен - в массиве не может быть двоеточий, разделяющих значения. Вы имели в виду [["2012-10", 4140],["2012-11", 10815],["2012-12", 10444]]?   -  person Brian Rogers    schedule 13.12.2013
comment
Да, я имел в виду, как вы указали, с запятыми вместо двоеточий. Я просто неправильно скопировал.   -  person user2557714    schedule 13.12.2013


Ответы (1)


Попробуй это:

class Program
{
    static void Main(string[] args)
    {
        string jsonIn = @"
        [
            {
                ""DATE"": ""2012-10"",
                ""UOVol"": 4140,
                ""FIRev"": 180,
                ""AFRev"": 692.75,
                ""ABRev"": 2900,
                ""OWRev"": 3791.25
            },
            {
                ""DATE"": ""2012-11"",
                ""UOVol"": 10815,
                ""FIRev"": 60,
                ""AFRev"": 170,
                ""ABRev"": 0,
                ""OWRev"": 3037.5
            },
            {
                ""DATE"": ""2012-12"",
                ""UOVol"": 10444,
                ""FIRev"": 40,
                ""AFRev"": 514.25,
                ""ABRev"": 1450,
                ""OWRev"": 7500
            }
        ]";

        JArray arrayIn = JArray.Parse(jsonIn);
        JArray arrayOut = new JArray();
        foreach (JObject jo in arrayIn.Children<JObject>())
        {
            JArray ja = new JArray();
            ja.Add(jo["DATE"]);
            ja.Add(jo["UOVol"]);
            arrayOut.Add(ja);
        }

        string jsonOut = arrayOut.ToString(Formatting.None);
        Console.WriteLine(jsonOut);
    }
}

Выход:

[["2012-10",4140],["2012-11",10815],["2012-12",10444]]
person Brian Rogers    schedule 13.12.2013
comment
Работает отлично. Большое спасибо! - person user2557714; 13.12.2013
comment
Без проблем; рад помочь. - person Brian Rogers; 13.12.2013