我不知道如何从webBrowser中获取我的JSON文件中的信息:
{
"somename":{
"id":51252152,
"name":"somename",
"profileIconId":531,
"summonerLevel":30,
"revisionDate":25235211
}
}
这就是我到目前为止所做的:(虽然我遇到的地方是label_id.Text,我想要JSON文件中的id。
Res_Web = webBrowser1.Document.Body.InnerText;
var jss = new JavaScriptSerializer();
var d = jss.Deserialize<dynamic>(Res_Web);
var list = new JavaScriptSerializer().Deserialize<List<dynamic>>(Res_Web);
label_id.Text = Convert.ToString(d[Name_b]["id"]);
这三个答案在每个方面都是正确的。谢谢!
答案 0 :(得分:1)
要反序列化Json,我使用了Newtonsoft Json,请参阅http://www.newtonsoft.com/json。
当你需要反序列化时 - 创建一个与你json的结构相匹配的对象。
然后反序列化是一个简单的问题,因此
obj = JsonConvert.DeserializeObject<MyClass>(jsonstring);
如果你想获得Json的节点
jsonnode = (JContainer)rd["jsonnode"]["jsonnodechild"]
以下内容可用于遍历节点的子节点
foreach (JContainer s in scopes)
{
}
此外,我不知道您的要求的完整规范,但不需要使用WebBrowser控件进行Web调用 - 您可以使用WebRequest类
WebRequest req = null;
WebResponse res = null;
StreamReader req = WebRequest.Create(url);
res = req.GetResponse();
sr = new StreamReader(res.GetResponseStream());
jsonString = sr.ReadToEnd();
答案 1 :(得分:1)
我已经在自己的WinForm应用程序中测试了您的代码,但它确实有效。我使用了System.Web.Extensions 4.0
var Res_Web = "{\"somename\":{\"id\":51252152,\"name\":\"somename\",\"profileIconId\":531,\"summonerLevel\":30,\"revisionDate\":25235211}}";
var jss = new JavaScriptSerializer();
var d = jss.Deserialize<dynamic>(Res_Web);
var list = new JavaScriptSerializer().Deserialize<List<dynamic>>(Res_Web);
var labelText = Convert.ToString(d["somename"]["id"]);
尝试她的其他解决方案:Deserialize JSON into C# dynamic object?
答案 2 :(得分:1)
这是我的建议。首先,创建一个简单的类来保存来自JSON内部的召唤者数据:
public class Summoner
{
public int id { get; set; }
public string name { get; set; }
public int profileIconId { get; set; }
public long revisionDate { get; set; }
public int summonerLevel { get; set; }
}
由于JSON外部部分的密钥(例如&#34; somename&#34;)可能因查询而异,因此反序列化为Dictionary<string, Summoner>
:
// this would be the JSON string you retrieve from your web request
string json = @"
{
""somename"":{
""id"":51252152,
""name"":""somename"",
""profileIconId"":531,
""summonerLevel"":30,
""revisionDate"":25235211
}
}";
var jss = new JavaScriptSerializer();
var result = jss.Deserialize<Dictionary<string, Summoner>>(json);
现在,您可以通过从字典中获取第一个键的Value
来提取数据。该值将是Summoner
类的一个实例,您可以轻松使用它:
var summoner = result.First().Value;
Console.WriteLine("id = " + summoner.id);
Console.WriteLine("name = " + summoner.name);
Console.WriteLine("level = " + summoner.summonerLevel);
以上输出:
id = 51252152
name = somename
level = 30