2012-09-13 2 views
0

Ceci est le JSON que j'ai obtenu à partir du flux, et converti en chaîne.La désérialisation de JSON en liste <> ne fonctionne pas en C#

"{\"data\":[{\"thread_id\":\"1111155552222\",\"recipients\":[123123,456456],\"message_count\":2100},{\"thread_id\":\"1111155553333\",\"recipients\":[123124,456457],\"message_count\":4851},{\"thread_id\":\"1111155554444\",\"recipients\":[123125,456458],\"message_count\":435}]}" 

public class DataContainer 
{ 
    List<data> data { get; set; } 
} 

public class data 
{ 
    public string thread_id { get; set; } 
    public long[] recipients { get; set; } 
    public int message_count { get; set; } 
} 

JavaScriptSerializer ser = new JavaScriptSerializer(); 

DataContainer data = ser.Deserialize<DataContainer>(json); 

Je reçois nulle à des données, il ne semble pas se deserialize. amateur à JSON. avoir mal à la tête avec ça déjà.

Merci!


Obtenir la chaîne JSON

WebResponse response = request.GetResponse(); 
Stream stream = response.GetResponseStream(); 
Encoding encode = System.Text.Encoding.GetEncoding("utf-8"); 
StreamReader reader = new StreamReader(stream, encode); 
string json = reader.ReadToEnd(); 
+0

Vous pouvez marquer cela avec C#. Cela permettra aux personnes appropriées de voir votre question plus facilement. – parKing

+0

merci pour les conseils! –

Répondre

0

Il semble que votre "JSON vous avez obtenu de flux et converti en chaîne" a été publié en feuilleton deux fois.

ASP.NET automatiquement JSON sérialise les réponses de vos méthodes de service, même si leur résultat est un objet ou d'une collection d'objets

Vous devriez pouvoir l'utiliser directement sans avoir à linéariser/désérialiser.

Quelque chose comme:

//Assuming GetJson() returns a JSON string, which you can use directly 
DataContainer data = GetJson(); 

Vérifiez ceci: http://encosia.com/asp-net-web-services-mistake-manual-json-serialization/

également ceci: Reading from JSON, data not displayed

+0

J'ai mis à jour mon code ci-dessus, c'est comme ça que j'ai eu la chaîne. –

+0

J'ai résolu le problème en créant un objet JObject et en le désérialisant. 'JObject dataa = JObject.Parse (json); data [] data = JsonConvert.DeserializeObject (données ["données"]. ToString()); ' –

Questions connexes