връща масив от масиви вместо масив от обекти с json.net

Трябва да върна масив от масиви вместо масив от обекти за флотационна диаграма.

Мога да получа следното:

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

но трябва (UPDATE фиксира следния ред):

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

Ето c#, който анализира входящ 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