2016-05-15 1 views
-3

j'appelle un API qui retourne une chaîne JSON comme celui-ci:obtenir une réponse par Web api une chaîne JSON et imprimer une seule des valeurs

{ 
    "type": "success", 
    "value": 
    { 
     "id": 246, 
     "joke": "Random joke here...", 
     "categories": [] 
    } 
} 

Je veux faire mon programme lire la chaîne JSON et retour seulement la chaîne joke. J'ai été en mesure d'obtenir la chaîne à partir de l'API Web, mais je ne peux pas le faire à l'objet JSON afin que je puisse imprimer uniquement la chaîne de blagues.

+1

Vous pourriez il suffit d'utiliser un espace réservé au lieu de la vraie blague puisque vous postez le code sur un réseau de questions-réponses comme celui-ci ... –

+0

@ FᴀʀʜᴀɴAɴᴀᴍ vous avez eu raison d'éditer la blague. l'affiche faisait un lien vers une blague api qui renvoie des blagues au hasard – Nkosi

Répondre

1

Vous devez d'abord créer les classes pour désérialiser votre json. Pour cela, vous pouvez utiliser Edit VS -> Collage spécial -> Coller JSON en tant que classes ou utiliser un site comme JsonUtils:

public class JokeInfo 
{ 

    [JsonProperty("id")] 
    public int Id { get; set; } 

    [JsonProperty("joke")] 
    public string Joke { get; set; } 

    [JsonProperty("categories")] 
    public IList<string> Categories { get; set; } 
} 

public class ServerResponse 
{ 

    [JsonProperty("type")] 
    public string Type { get; set; } 

    [JsonProperty("value")] 
    public JokeInfo JokeInfo { get; set; } 
} 

Ensuite, utilisez une bibliothèque comme JSON.NET désérialiser les données:

// jokeJsonString is the response you get from the server 
var serverResponse = JsonConvert.DeserializeObject<ServerResponse>(jokeJsonString); 
// Then you can access the content like this: 

var theJoke = serverResponse.JokeInfo.Joke; 
+2

Merci beaucoup d'être honnête les cours que json a besoin était mon problème maintenant que vous avez collé ce site je pense que je vais bien! –