2017-05-06 1 views
0

Ich habe bereits in vielen anderen Posts nachgesehen und die Lösung ist immer die gleiche, aber es funktioniert nicht für mich, also gehe ich hier hin.C# -Objekt kann nicht automatisch aus abgerufenem JSON generiert werden

Ich habe die folgenden HttpClient, die einen JSON-String abruft und speichert es in einer Variablen.

JSON

{"visiteur":{"id":"a17","nom":"Andre","prenom":"David","login":"dandre","mdp":"12e0b9be32932a8028b0ef0432a0a0a99421f745","adresse":"1 rue Petit","cp":"46200","ville":"Lalbenque","dateEmbauche":"1998-11-23","idTypeActeur":"2","oldMdp":"oppg5","mail":"[email protected]","questionSecrete":"GSB","version":"0"}} 

Kunde

// url de récupération du json de l'acteur 
      string urlActeur = "http://10.0.0.5/ppe3JoJuAd/gsbAppliFraisV2/webservices/w_visiteur.php" + "?" + "login=" + Login + "&" + "pass=" + Pass; 

      //instanciation du client http qui envoi un header json 
      HttpClient clientActeur = new HttpClient(); 
      clientActeur.DefaultRequestHeaders.Accept.Clear(); 
      clientActeur.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json")); 

      //réponse à la requête Http 
      var response = await clientActeur.GetAsync(urlActeur); 
      var json = response.Content.ReadAsStringAsync().Result; 
      var acteurJson = JsonConvert.DeserializeObject<ActeurJson>(json); 

Hier sind die Inhalte der JSON Variable:

{"visiteur":{"id":"a17","nom":"Andre","prenom":"David","login":"dandre","mdp":"12e0b9be32932a8028b0ef0432a0a0a99421f745","adresse":"1 rue Petit","cp":"46200","ville":"Lalbenque","dateEmbauche":"1998-11-23","idTypeActeur":"2","oldMdp":"oppg5","mail":"[email protected]","questionSecrete":"GSB","version":"0"}} 

es also tut holen Sie das JSON, und speichert es in der Variablen, aber mit Blick auf meine acteurJson Variable erhalte ich ein null Objekt.

Klassen mit json2csharp validiert:

public class Acteur 
    { 
     [JsonProperty("id")] 
     public string id { get; set; } 
     [JsonProperty("nom")] 
     public string nom { get; set; } 
     [JsonProperty("prenom")] 
     public string prenom { get; set; } 
     [JsonProperty("login")] 
     public string login { get; set; } 
     [JsonProperty("mdp")] 
     public string mdp { get; set; } 
     [JsonProperty("adresse")] 
     public string adresse { get; set; } 
     [JsonProperty("cp")] 
     public string cp { get; set; } 
     [JsonProperty("ville")] 
     public string ville { get; set; } 
     [JsonProperty("dateEmbauche")] 
     public string dateEmbauche { get; set; } 
     [JsonProperty("idTypeActeur")] 
     public string idTypeActeur { get; set; } 
     [JsonProperty("oldMdp")] 
     public string oldMdp { get; set; } 
     [JsonProperty("mail")] 
     public string mail { get; set; } 
     [JsonProperty("questionSecrete")] 
     public string questionSecrete { get; set; } 
     [JsonProperty("version")] 
     public string version { get; set; } 
    } 

    public class ActeurJson 
    { 
     public Acteur Acteur { get; set; } 
    } 

Ich versuche, die JSON aus dem JSON-Variable zu erhalten automatisch ein Acteur Objekt zu erzeugen. Was vermisse ich?

Antwort

2

Die JSON-Daten sind {"visiteur":{...} }. Für JsonConvert.DeserializeObject<ActeurJson> funktioniert, muss der Name der C# Eigenschaft den Namen der Eigenschaft im JSON-Objekt entsprechen:

public class ActeurJson 
{ 
    public Acteur Visiteur { get; set; } 
} 

Alternativ können Sie JsonPropertyAttribute verwenden den Namen der C# Eigenschaft außer Kraft zu setzen:

public class ActeurJson 
{ 
    [JsonProperty("visiteur")] 
    public Acteur Acteur { get; set; } 
} 
-1

Sie haben Acteur und ActeurJson Klassen, während die String-Darstellung mit der von Acteur übereinstimmt. Wenn Sie die Deserialisierungslinie auf

var acteurJson = new ActeurJson() { Acteur = JsonConvert.DeserializeObject<Acteur>(json)}; 

ändern, sollten Sie Ihr Problem lösen.

Verwandte Themen