none
Deserializzare una array RRS feed

  • Domanda

  • Salve a tutti, non riesco a leggere il contenuto deserializzato da un Helper Json quando la stringa JSON rappresenta un'array. Mi spiego meglio:
    public class JsonHelper
        {
            public static T Deserialize<T>(string json)
            {
                T obj = Activator.CreateInstance<T>();
                MemoryStream ms = new MemoryStream(Encoding.Unicode.GetBytes(json));
                System.Runtime.Serialization.Json.DataContractJsonSerializer serializer = new System.Runtime.Serialization.Json.DataContractJsonSerializer(obj.GetType());
                obj = (T)serializer.ReadObject(ms);
                ms.Dispose();
                return obj;
            }
        }
    

    Se devo convertire una stringa json (che rappresenta un singolo oggetto) nel mio oggetto GameRequest, mi basta fare (e funziona):
    
    
    GameRequest gr = JsonHelper.Deserialize<GameRequest>(json);
    

    Ora, però, la mia stringa json non rappresenta un singolo oggetto, ma un'array. Avevo pensato che questo funzionasse:
    
    
    GameRequest[] gr = JsonHelper.Deserialize<GameRequest[]>(json);
    

    Ma non funziona... Come ne esco?
    • Modificato Cristiano Insola giovedì 11 aprile 2013 22:27 Riformulata la domanda
    giovedì 11 aprile 2013 22:08

Risposte

  • Ho risolto cambiato la natura dell'oggetto restituito. Adesso ottengo

    {[...]},{[...]}

    Invece di

    [{...},{...}]

    In questo modo è sufficiente un DataContract per gestire la deserializzazione

    venerdì 3 maggio 2013 16:38

Tutte le risposte

  • Che errore ottieni?

    Marco Minerva [MCPD]
    Blog: http://marcominerva.wordpress.com
    Twitter: @marcominerva

    lunedì 15 aprile 2013 15:38
    Moderatore
  • Prova ad usare la libreria Json.NET. (la trovi su internet) secondo me meglio di javascript serializer .. in questo modo

    using Newtonsoft.Json;
    
    ...
    
    JsonConvert.DeserializeObject<T>(json);

    martedì 16 aprile 2013 06:52
  • Mah... il problema è proprio un altro e ho risolto agirando completamente la questione. In ogni caso la mia domanda era: come deve essere scritto il mio oggetto GameRequest per ricevere dati del tipo:

    [{...},{...},{...}]

    invece che del tipo

    {...},{...},{...}

    ??

    mercoledì 17 aprile 2013 08:00
  • Ciao Cristiano,

    Possiamo quindi capire che hai trovato una soluzione per il tuo problema? Se si, potresti gentilmente condividerla con la community, in modo che anche gli altri membri possano beneficiare dalla tua esperienza?

    Grazie in anticipo,


    Irina Turcu - Microsoft

    [Manifesto] Regole e Aspetti generali all'uso dei forum MSDN

    Questo contenuto è distribuito “as is” e non implica alcuna responsabilità da parte di Microsoft. L'azienda offre questo servizio gratuitamente, allo scopo di aiutare gli utenti e approfondire la loro conoscenza dei prodotti e tecnologie Microsoft.

    LinkedIn

    martedì 30 aprile 2013 16:37
  • Ho risolto cambiato la natura dell'oggetto restituito. Adesso ottengo

    {[...]},{[...]}

    Invece di

    [{...},{...}]

    In questo modo è sufficiente un DataContract per gestire la deserializzazione

    venerdì 3 maggio 2013 16:38