Json用维基百科api反序列化c#

时间:2015-12-08 08:17:28

标签: c# json json.net wikipedia-api

我有一个json格式的维基百科api。现在我想从这个api获取提取信息。我想让任何维基百科api都充满活力。 [我的wikipedia api] [1]。我从jsontoCsharp获得了以下信息

namespace Json_deserialize
 {
   public class pageval
  {
    public int pageid { get; set; }
    public int ns { get; set; }
    public string title { get; set; }
    public string extract { get; set; }
}


public class Query
{
    public Dictionary<string, pageval> pages { get; set; }
}

public class Limits
{
    public int extracts { get; set; }
}

public class RootObject
{
    public string batchcomplete { get; set; }
    public Query query { get; set; }
    public Limits limits { get; set; }
}

class Short_text
  {
    public static RichTextBox txt1 = new RichTextBox();
    public static void shortText()
    {
        using (WebClient wc = new WebClient())
        {
            var client = new WebClient();
            var response = client.DownloadString("https://en.wikipedia.org/w/api.php?format=json&action=query&prop=extracts&exlimit=max&explaintext&exintro&titles=Neuschwanstein%20Castle&redirects="); ;

            pageval m = JsonConvert.DeserializeObject<pageval>(response);

            string result = m.extract;

            txt1.Text = result;
         }

      }

  }

}

我想制作一个应该是动态的编码。这意味着id 240912应该及时变化。我尝试了很多。但无法得到满意的结果。

1 个答案:

答案 0 :(得分:2)

所有JSON对象本质上都是字典。但是,假设模式是常量,通常将它们表示为C#中的类通常是有意义的。对于属性名称并不总是相同的情况,编写表示对象的类是不可能的;所以你大量使用动态或字典

var post_id

获取摘录:

public class pageval
{
    public int pageid { get; set; }
    public int ns { get; set; }
    public string title { get; set; }
    public string extract { get; set; }
}


public class Query
{
    public Dictionary<string, pageval>  pages { get; set; }
}

public class Limits
{
    public int extracts { get; set; }
}

public class RootObject
{
    public string batchcomplete { get; set; }
    public Query query { get; set; }
    public Limits limits { get; set; }
}