2012-11-05 14 views
5

sto cercando di produrre la seguente struttura JSON con JavaScriptSerializer in Net 3.5:lista annidata con JavaScriptSerializer

{ 
    "chart": "pie", 
    "series": [ 
     { 
      "name": "Browsers", 
      "data": [ 
       [ 
        "Firefox", 
        6 
       ], 
       [ 
        "MSIE", 
        4 
       ] 
      ], 
      "size": "43%" 
     } 
    ] 
} 

Il problema che affronto è per quanto riguarda la sezione dati. Non riesco a creare una classe che si serializza nella struttura sopra in data.

Ho letto altri post che toccano il soggetto ma la soluzione sembra essere sempre quella di utilizzare JSON.Net. Ad esempio Serializing dictionaries with JavaScriptSerializer. Anche se, prima di tutto, voglio risolverlo usando JavaScriptSerializer o altre funzionalità incorporate nel framework .Net 3.5.

Come si genera la sezione dati?

* EDIT Il modo per risolverlo con JavaScriptSerializer consiste nel creare un array di oggetti per la proprietà data sull'oggetto che sta per essere serializzato.

Parametro di input dati è "Firefox: 6 \ nMSIE: 4 \ nChrome: 7".

oggetto pubblico [] GetData (dati di tipo stringa) {var dataStrArr = data.Split (new [] {} Environment.NewLine, StringSplitOptions.None);

 var dataArr = new object[dataStrArr.Length]; 

     for (var index = 0; index < dataStrArr.Length; index++) 
     { 
      var component = dataStrArr[index]; 
      var componentArr = component.Split(':'); 
      if (componentArr.Length != 2) 
       continue; 

      var key = componentArr[0]; 
      decimal value; 

      if (decimal.TryParse(componentArr[1], out value)) 
      { 
       var keyValueArr = new object[2]; 
       keyValueArr[0] = key; 
       keyValueArr[1] = value; 

       dataArr[index] = keyValueArr; 
      } 
     } 

     return dataArr; 
    } 
+0

possibile duplicato di [Serializzare dizionari con JavaScriptSerializer] (http://stackoverflow.com/questions/6416950/serializing-dictionaries-with-javascriptserializer) – McGarnagle

+0

Il post a cui è collegato ha una soluzione .Net nativa (che sovrascrive il serializzatore) . Ancora, è molto più facile familiarizzare con JSON.Net ... – McGarnagle

+0

Presumibilmente è tecnologicamente vincolato se sta ancora usando .net 3.5, potrebbe non avere l'opzione di JSON.Net. – Pxtl

risposta

1

penso che avete bisogno di qualcosa come la classe seguente (RootObject) per serializzare che:

public class Series 
{ 
    public string name { get; set; } 
    public List<List<object>> data { get; set; } 
    public string size { get; set; } 
} 

public class RootObject 
{ 
    public string chart { get; set; } 
    public List<Series> series { get; set; } 
} 

fatemi sapere se questo aiuta.

Problemi correlati