通过web api获取响应json字符串并仅打印其中一个值

时间:2016-05-15 15:25:00

标签: c# json asp.net-web-api json-deserialization

我调用一个API,它返回一个像这样的JSON字符串:

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

我想让我的程序读取JSON字符串并仅返回joke字符串。我能够从Web API获取字符串,但我无法将其转换为JSON对象,因此我只能打印笑话字符串。

1 个答案:

答案 0 :(得分:1)

首先,您需要创建类以将您的json反序列化为。为此,您可以使用VS的编辑 - >选择性粘贴 - >将Json粘贴为类或使用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; }
}

然后使用像JSON.NET这样的库反序列化数据:

// 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;