2011-08-03 8 views
6

JSON musi być w tym formacie:Jak zwrócić wielowymiarową tablicę jako JSON na wykresie jqPlot w ASP.NET MVC C#

var data = [ 
      ['Heavy Industry', 12],['Retail', 9], ['Light Industry', 14], 
      ['Out of home', 16],['Commuting', 7], ['Orientation', 9] 
      ]; 

Ale w moim metody działania nie mogę dowiedzieć się, jak zbudować json, który ma być renderowany w tym formacie. Oto co mam:

var json = new[] { 
       new[] {"Pending", summaryData.Sum(a => (int)a.Pending).ToString() }, 
       new[] {"Completed", summaryData.Sum(a => (int)a.Completed).ToString()} 
      }; 

     return Json(json, JsonRequestBehavior.AllowGet); 

Które zwraca następujący JSON:

[["Pending","146"],["Completed","914"]] 

To jest blisko wyjątkiem tego, że ich są cudzysłowy wokół wartości liczbowych i jqPlot nie wydaje się to podoba. Niestety, jeśli spróbuję zrobić Int32.Parse (...), otrzymam wyjątek.

Jakieś pomysły, jak najlepiej to zrobić?

Dzięki

Odpowiedz

4

Zgaduję błędu można dostać podczas próby korzystania Int32.parse jest coś takiego jak „No najlepszy rodzaj wyszukiwania dla niejawnie wpisany tablicy.” Gdy używana jest niejawnie wpisana tablica, a wartości w tej tablicy są różnych typów, kompilator nie wie, jaki typ wnioskować o tablicę.

Można obejść błędu mówiąc kompilator typu dla tablic:

var json = new[] { 
       new object[] {"Pending", summaryData.Sum(a => (int)a.Pending) }, 
       new object[] {"Completed", summaryData.Sum(a => (int)a.Completed) } 
      }; 

Ten powinny serializować tablicę tak, jak chcesz go.

Jeśli chodzi o jqPlot, liczby wokół liczby powodują problem, ponieważ wtyczka najprawdopodobniej wymagała, aby drugi element w tablicy był typu Numer.

+0

Wielkie dzięki. Miałeś rację co do wyjątku (dzięki za uwzględnienie tego). Dodanie "obiektu" było kluczowe – wgpubs

+1

Warto również zauważyć, że inni lądują tutaj z Google - dwuwymiarowa tablica w C# jak dziesiętna [5, 10] nie daje ci dwuwymiarowej tablicy w JSON wychodzącej z MVC, dostaje ci pojedyncza 50-elementowa tablica. Potrzebujesz Listy , aby uzyskać ją jako tablicę 2-wymiarową w JSON. –

Powiązane problemy