2017-07-14 6 views
1

Laissez-moi vous expliquer mon problème. J'ai donc JSON:Désérialiser l'objet Api avec JSON.net

{"num":20, "meta":[{"id":312, "identif":{"type":true,"status":false}}}]} 

Je suis saisissant actuellement le champ meta id avec:

var id = JsonConvert.DeserializeObject<typeObj> 
    (returnJSON(ApiUrl)).meta[0].id; 

classe à refrence:

class typeObj 
    { 
     public int num {get; set; } 
     public List<metatypes> meta {get; set;} 
    } 
    class metatypes 
    { 
     public int id {get; set;} 
    } 

La question ne réside pas ici cependant. J'essaye d'obtenir l'élément d'état d'indentif de méta.

J'ai essayé de mettre une liste metatypes comme:

class metatypes 
    { 
     public int id {get; set;} 
     public List<idtypes> identif {get; set;} 
    } 
    class idtypes 
    { 
     public bool type {get; set;} 
     public bool status {get; set;} 
    } 

Appeler avec:

var id = JsonConvert.DeserializeObject<typeObj> 
    (returnJSON(ApiUrl)).meta[0].identif[0].status; 

Mais lorsque je tente cela, il retourne

« ne peut désérialiser l'objet JSON en cours (par exemple {"name": "value"}) dans le type 'System.Collections.Generic.List`1'

a regardé autour et n'a pas pu trouver une solution directe à mon problème.

Répondre

1

Vous avez un JSON incorrect pour la structure souhaitée:

cours donnés:

class typeObj 
{ 
    public int num {get; set; } 
    public List<metatypes> meta {get; set;} 
} 

class metatypes 
{ 
    public int id {get; set;} 
    public List<idtypes> identif {get; set;} 
} 
class idtypes 
{ 
    public bool type {get; set;} 
    public bool status {get; set;} 
} 

Votre JSON devrait ressembler (identif doit être un tableau): (.NET Fiddle)

{"num":20, "meta":[{"id":312, "identif":[{"type":true,"status":false}]}]} 

Pour le json en question vos classes devraient être comme ceci: (.NET Fiddle)

class typeObj 
{ 
    public int num {get; set; } 
    public List<metatypes> meta {get; set;} 
} 

class metatypes 
{ 
    public int id {get; set;} 
    public idtypes identif {get; set;} 
} 
class idtypes 
{ 
    public bool type {get; set;} 
    public bool status {get; set;} 
} 
+0

Vous êtes un épargnant de vie! Je vous remercie! Je ne peux pas croire que c'est tout ce qu'il a fallu! –