反序列化不断变化的JSON对象名称在C#

问题描述:

端点我从请求:反序列化不断变化的JSON对象名称在C#

https://en.wikipedia.org/w/api.php?format=json&action=query&prop=extracts&exintro=&explaintext=&titles=eminem

如果你看一下JSON里面的页面对象还有另外一个对象,它是维基百科文章的ID。在我的项目中,我不会仅仅解析Eminem的页面,而是解析其他歌手/艺术家。所以我的问题是我怎么去解析这个不断变化的json对象名称?

我为C#类JSON

public class ArticleRootobject { 
    public string batchcomplete { get; set; } 
    public Query query { get; set; } 
} 

public class Query { 
    public Normalized[] normalized { get; set; } 
    public Pages pages { get; set; } 
} 

public class Pages { 
    public _4429395 _4429395 { get; set; } 
} 

public class Normalized{ 
    public string from { get; set; } 
    public string to { get; set; } 
} 

感谢您的帮助

+0

使用字典'pages'如图[创建从一个强类型的C#对象(ID为json对象名称)(https://stackoverflow.com/q/34213566/3744182)。 – dbc

取决于你所使用的库为deserialisation,你可以在查询页面申报财产作为Dictionary<string,[contentObject]>。你将需要为contentObject的相关属​​性(pageId,ns,title等)创建一个类。

http://www.newtonsoft.com/json/help/html/DeserializeDictionary.htm

+0

我正在使用Json.net,并且我会尝试一下 – CaptainVader2

你可以定义你的Querypages财产Dictionary<string, Page>和定义一个类Page

public class Query 
{ 
    public Normalized[] normalized { get; set; } 
    public Dictionary<string, Page> pages { get; set; } 
} 

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