2011-08-03 23 views
6

El JSON tiene que estar en este formato:Cómo devolver una matriz multidimensional como JSON para la carta jqPlot en ASP.NET MVC C#

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

Pero en mi método de acción no puedo encontrar la manera de construir el json que se representará en ese formato. Aquí es lo que tengo:

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); 

que devuelve el siguiente JSON:

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

Esto se acerca a excepción de que su son comillas alrededor de los valores numéricos y jqPlot no parece que les gusta. Desafortunadamente, si trato de hacer un Int32.Parse (...), obtengo una excepción.

¿Alguna idea de cómo hacer esto mejor?

Gracias

Respuesta

4

Supongo que el error se obtiene cuando se intenta utilizar Int32.parse es algo así como "No se encontró mejor tipo de conjunto de tipos implícita." Cuando se utiliza una matriz tipada implícitamente y los valores en esa matriz son de tipos diferentes, el compilador no sabe qué tipo inferir para la matriz.

Puede moverse por el error diciéndole al compilador de un tipo para las matrices:

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

Este debe serializar la matriz de la forma que desee.

En cuanto a jqPlot, las comillas alrededor del número están causando un problema porque el complemento probablemente requiera que el segundo elemento de la matriz sea del tipo Número.

+0

Muchas gracias. Tuviste razón sobre la excepción (gracias por incluir eso). Agregando "objeto" fue la clave – wgpubs

+1

También vale la pena señalar para otros aterrizar aquí desde Google - una matriz de 2 dimensiones en C# como decimal [5,10] no te da una matriz de 2 dimensiones en JSON que sale de MVC, te da una única matriz de 50 elementos. Necesita la Lista para que salga como una matriz de 2 dimensiones en JSON. –

Cuestiones relacionadas