我有一个关于反序列化json数据的问题。我的json数据就像那样
{
"batchcomplete": "",
"query": {
"pages": {
"62413": {
"pageid": 62413,
"ns": 0,
"title": "espri"
}
}
}
}
我想获取页面ID或只是数字。号码" 62413"正在改变每个不同的请求。
[WebMethod]
[ScriptMethod(ResponseFormat = ResponseFormat.Json)]
public void readString()
{
requestHelper _req = null;
HttpClient client = new HttpClient();
HttpResponseMessage response = client.GetAsync("https://tr.wiktionary.org/w/api.php?action=query&titles=espri&format=json").Result;
//var categories = new object { };
if (response.IsSuccessStatusCode)
{
var content = response.Content.ReadAsStringAsync().Result;
//categories = response.Content.ReadAsStringAsync();
//dynamic a = JsonConvert.DeserializeObject(content);
//Dictionary<string, object> dict = JsonConvert.DeserializeObject<Dictionary<string, object>>(content);
var b = JObject.Parse(content).Descendants().ToArray();
var art = b[9];
_req = new requestHelper { _result = 1, _message = content };
}
HttpContext.Current.Response.Write(new JavaScriptSerializer().Serialize(_req));
}
}
我的代码是这样的,这解决了我的问题,但我不认为这是最好的方法。我的问题是,有什么不同的方法可以得到我想要的东西吗?我尝试使用字典,但我无法弄明白。谢谢你的帮助。
答案 0 :(得分:2)
您可以使用此模型
public class Page
{
public int pageid { get; set; }
public int ns { get; set; }
public string title { get; set; }
}
public class Query
{
public Dictionary<string,Page> pages { get; set; }
}
public class WiktionaryResponse
{
public string batchcomplete { get; set; }
public Query query { get; set; }
}
并反序列化为
var obj = JsonConvert.DeserializeObject<WiktionaryResponse>(json);