Il y a une API que je ne contrôle pas, mais dont la sortie que je dois consommer avec C #, de préférence à l'aide de json.net.
Voici un exemple de réponse: P>
class Media { public int media_id; public int explicit_; }
3 Réponses :
C # vous permet de définir des membres avec des noms de mots réservés (pour les cas d'interopérabilité exactement comme celui-ci) en leur échappant avec un @, par exemple, Je ne sais pas comment cela joue avec JSON.NET, Mais j'imagine que cela devrait fonctionner (puisque le @ est une évasion et ne faisait pas partie du nom de champ). P> P>
Je comprends ce que vous dites, mais pouvez-vous fournir un lien vers une explication plus poussée? J'ai essayé ceci w / ce changement: "var x = nouveau support (); x.explicit = true;" Ne compilerait pas, mais "x. @ Explicit = vrai" a fait.
Dans votre code, vous utiliseriez "@Explicit". Mais cela est compilé à un nom réel de "explicite" dans le binaire. Donc, le code de sérialisation / de désérialisation JSON.NET verrait "explicite", pas "@Explicit". Tout comme lorsque vous utilisez "\ n" dans votre code, mais il est compilé dans une surface limite dans le binaire.
Je vois, merci. Toujours accepté la réponse JsonProperty, car elle est spécifique à ce domaine et gère également plus de cas généraux.
n'ai pas utilisé JSON.NET, mais à en juger par les docs ici A>, je pense que vous avez juste besoin de faire ce que vous feriez avec XMLSérialisation: ajoutez un attribut à indiquer comment la propriété JSON doit être appelée: class Media {
[JsonProperty("media_id")]
public int MediaId;
[JsonProperty("explicit")]
public int Explicit;
}
Bravo, j'ai sauté sur celui-ci parce que le TOC a déclaré "sérialiser" quand je voulais désexerimation. Merci pour le pointeur.
Le code suivant a fonctionné pour moi.
class JsonRpc { public string id; public string method; public string[] @params; } JsonConvert.DeserializeObject<JsonRpc> (data)