如何从API显示JSON值

时间:2018-07-13 19:36:26

标签: c# json.net

例如,我想显示此API内容

Console.WriteLine(data.Title)

将显示

"Lembethe leading by example"

看看我的代码

using (var webClient = new System.Net.WebClient())
{
    var json = webClient.DownloadString(@"url");
    var data = JsonConvert.DeserializeObject<Result>(json);
    Console.WriteLine(data.Title);
}

这些是我的1级以下课程

public partial class Result
{
    [JsonProperty("tags")]
    public List<Tag> Tags { get; set; }

    [JsonProperty("custom_tags")]
    public List<string> CustomTags { get; set; }

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

    [JsonProperty("title")]
    public string Title { get; set; }

    [JsonProperty("blurb")]
    public string Blurb { get; set; }

    [JsonProperty("url")]
    public string Url { get; set; }

    [JsonProperty("published_at")]
    public DateTimeOffset PublishedAt { get; set; }

    [JsonProperty("thumbnail")]
    public Banner Thumbnail { get; set; }

    [JsonProperty("banner")]
    public Banner Banner { get; set; }
}

这些是我2班以下的班级

public partial class Banner
{
    [JsonProperty("small")]
    public string Small { get; set; }

    [JsonProperty("medium")]
    public string Medium { get; set; }

    [JsonProperty("large")]
    public string Large { get; set; }

    [JsonProperty("original")]
    public string Original { get; set; }
}

我在哪里出错了,它甚至没有给我错误或输出?

2 个答案:

答案 0 :(得分:1)

由于JSON数据格式result是一个数组,因此您可以尝试使用此示例来制作它。

  • 您可以在Visual Studio中使用Web Essentials,使用“编辑”>“选择性粘贴”>将JSON粘贴为类,可以更轻松地了解Json与模型之间的关系。

  • 如果您无法使用Web Essentials,则可以将http://json2csharp.com/在线JSON转换为Model类。

Model看起来像这样。

public class Tag
{
    public string id { get; set; }
    public string name { get; set; }
    public string type { get; set; }
    public bool subscribed { get; set; }
}

public class Thumbnail
{
    public object small { get; set; }
    public object medium { get; set; }
    public object large { get; set; }
    public object original { get; set; }
}

public class Banner
{
    public string small { get; set; }
    public string medium { get; set; }
    public string large { get; set; }
    public string original { get; set; }
}

public class Result
{
    public List<Tag> tags { get; set; }
    public List<string> custom_tags { get; set; }
    public string id { get; set; }
    public string title { get; set; }
    public string blurb { get; set; }
    public string url { get; set; }
    public DateTime published_at { get; set; }
    public Thumbnail thumbnail { get; set; }
    public Banner banner { get; set; }
}

public class RootObject
{
    public List<Result> result { get; set; }
    public DateTime first { get; set; }
    public DateTime last { get; set; }
}

var json = webClient.DownloadString(@"https:....");
 var data = JsonConvert.DeserializeObject<RootObject>(json);
 Console.WriteLine(data.result[0].title);

答案 1 :(得分:0)

由于使用了错误的解析模型,因此可以使用Model generator

将此代码用于以下型号

Unshelve
  

旁注:-更喜欢使用HttpClient而不是WebClient,Here是一个很好的例子

型号:-

var data = JsonConvert.DeserializeObject<Root>(json);