2013-09-03 2 views
2

Qu'est-ce qui me manque ici? Pourquoi ai-je cette exception? Newtonsoft.Json.JsonSerializationException n'a pas été gérée par le code utilisateur, Erreur de conversion de la valeur "[{" nom d'utilisateur ":" quelqu'un "," computername ":" ordinateur1 "," PID ":" 1234 "}]" pour taper 'System.Collections. Generic.List`1 [WebApplication4.PInfo] '. Chemin '', ligne 1, 95.Newtonsoft.Json.JsonSerializationException n'a pas été gérée par le code d'utilisateur

Le code est ci-dessous, classe très simple, très simple est, mais une erreur méchant = (

public class PInfo 
{ 
    public string username { get; set; } 
    public string computername { get; set; } 
    public string PID { get; set; } 
} 

string s = "\"[{\\\"username\\\":\\\"someone\\\",\\\"computername\\\":\\\"computer1\\\",\\\"PID\\\":\\\"1234\\\"}]\""; 
var z = JsonConvert.DeserializeObject<List<PInfo>>(s); 
+1

Il semble que vous échappez la chaîne que vous voyez dans le débogueur. – I4V

Répondre

3

Je pense que vous avez une erreur dans votre chaîne JSON, les anti-slash sont peut-être incorrectes.

Si vous essayez cette chaîne JSON

[{"username":"test","computername":"test","PID":"test"}] 

que vous pouvez produire vous-même avec le programme suivant alors tout fonctionne très bien:

private static void test() 
    { 
     PInfo p = new PInfo(); 
     p.username = "test"; 
     p.computername = "test"; 
     p.PID = "test"; 
     List<PInfo> testlist = new List<PInfo>(); 
     testlist.Add(p); 
     string json = JsonConvert.SerializeObject(testlist); 

     var z = JsonConvert.DeserializeObject<List<PInfo>>(json); 
    } 
1

Ce n'est pas une chaîne JSON valide, essayez:

string s = "[{\"username\":\"someone\",\"computername\":\"computer1\",\"PID\":\"1234\"}]"; 
Questions connexes