2010-10-03 4 views

Répondre

4

Vous pouvez commencer par définir les classes du modèle qui va gérer la réponse:

public class XurrencyResponse 
{ 
    public string Status { get; set; } 
    public string Code { get; set; } 
    public string Message { get; set; } 
    public Result Result { get; set; } 
} 

public class Result 
{ 
    public decimal Value { get; set; } 
    public string Target { get; set; } 
    public string Base { get; set; } 
    public DateTime Updated_At { get; set; } 
} 

Une fois que vous les avez vous suffit d'appeler le service:

class Program 
{ 
    static void Main() 
    { 
     var serializer = new JavaScriptSerializer(); 
     string json = null; 
     using (var client = new WebClient()) 
     { 
      json = client.DownloadString("http://xurrency.com/api/eur/gbp/1.5"); 
     } 
     var response = serializer.Deserialize<XurrencyResponse>(json); 
     Console.WriteLine(response.Status); 
    } 
} 
1

Vous avez besoin de deserialize les données JSON dans un objet avant de pouvoir l'utiliser.

1

Si vous faites référence à System.Web.Extensions.dll et ajoutez un using System.Web.Script.Serialization; directive vers le haut du (s) fichier (s) de code nécessaire, alors vous devriez avoir accès à JavaScriptSerializer - alors vous créez simplement une classe qui ressemble au JSON et appelle `Deserialize, ie pour

{"result":{"updated_at":"2010-10-02T02:06:00Z", "value":1.3014,"target":"gbp","base":"eur"}, "code":0, "status":"ok"} 

Vous pourriez avoir:

public class XurrencyResponse { 
    public class Result { 
     public string updated_at {get;set;} 
     public decimal value {get;set;} 
     public string target {get;set;} 
     public string base {get;set;} 
    } 
    public Result result {get;set;} 
    public int code {get;set;} 
    public string status {get;set;} 
} 

appellent alors serializer.Deserialize<XurrencyResponse>, où serializer est une instance JavaScriptSerializer.

+0

'XurrencyResponse', lol, vous lisez mon esprit. Même convention de nommage. J'aime ça :-) –

+0

@Darin - Je ne sais pas pourquoi, mais je préfère les types imbriqués pour mes DTO JSON. Je l'ai nommé à l'origine "... Résultat", mais * dans ce cas * il est ambigu avec le 'Result' interne –

0

Une autre alternative est d'utiliser Json.NET

J'utilise cette analyse des données lors de JSON, et ont été très satisfaits de cette bibliothèque, puisque vous n'avez pas besoin de modéliser des classes explicites pour contenir les données si vous analysez sortie simple, et vous donne des fonctionnalités avancées si vous avez besoin d'analyser la sortie plus compliquée.

Vérifiez cette bibliothèque avant de faire votre choix :)