2015-03-15 1 views
0

J'ai une partie de ma JSON qui est comme ça:Comment gérer noeud JSON avec un nom comme #text

"image":[{"#text":"http:\/\/userserve-ak.last.fm\/serve\/34\/84504153.jpg","size":"small"}] 

Je fait une classe comme

public class Image 
{ 
    public string Text { get; set; } 
    public string size { get; set; } 
} 

JSON proviennent d'un REST et je Api désérialiser le résultat avec Json.Net

var content = await LastFmMethods.GetUserAsync(userName.ToString()); 
LastfmUserRootObject rootUser = JsonConvert.DeserializeObject<LastfmUserRootObject>(content); 

Mais je ne suis jamais en mesure d'obtenir cette partie:

"#text": "http://userserve-ak.last.fm/serve/34/84504153.jpg"

Et je suis sûr que c'est parce que le # avant « texte ". Comment résoudre ce problème?

Répondre

2

Indiquez le nom de la propriété dans la propriété Name d'un attribut DataMember, ou la propriété PropertyName d'un attribut JsonProperty:

[DataContract] 
public class Image 
{ 
    [DataMember(Name="#text")] 
    public string Text { get; set; } 
    [DataMember] 
    public string size { get; set; } 
} 

Ou

public class Image 
{ 
    [JsonProperty("#text")] 
    public string Text { get; set; } 

    public string size { get; set; } 
} 

Si vous utilisez DataMemberAttribute, ne pas oublier pour ajouter l'attribut DataContract, et que la sérialisation du contrat de données est opt-in, vous devez donc ajouter DataMember à tous Les attributs que vous voulez sérialiser.