Json 从维基百科反序列化 api 使用 C#

Json deserialize from wikipedia api with c#

我有一个维基百科 api json 格式。现在我想从这个 api 中获取提取信息。我想让它对任何维基百科都是动态的 api。 [我的维基百科 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 应该及时变化。我试了很多。却得不到满意的结果。

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

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

获取摘录:

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="); ;

var responseJson = JsonConvert.DeserializeObject<RootObject>(response);
var firstKey = responseJson.query.pages.First().Key;
var extract = responseJson.query.pages[firstKey].extract;