c# - ASP.net 如何解析 JSON
问题描述
我正在尝试让网页返回 iTunes 搜索结果。在查看这里的一些结果以解决类似问题时,我将这段代码放在一起,但是我得到了错误:System.Collections.Generic.KeyNotFoundException:'给定的键不存在于第 41 行的字典中:
string trackName = obj2["trackname"].ToString();
任何帮助是极大的赞赏。
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Script.Serialization;
using System.Web.UI;
using System.Web.UI.WebControls;
namespace Project4
{
public partial class project4a : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
}
protected void Button1_Click(object sender, EventArgs e)
{
string choice="";
if (TextBox1.Equals("Music"))
{
choice = "musicTrack";
}else if (TextBox1.Equals("Movie"))
{
choice = "movie";
}else if (TextBox1.Equals("Software"))
{
choice = "software";
}
string url = "https://itunes.apple.com/search?term=" + TextBox1.Text.ToString() + "&entity="+choice ; //+DropDownList1.SelectedValue.ToString()
using (var webClient = new System.Net.WebClient())
{
var json = webClient.DownloadString(url);
//parse
JavaScriptSerializer jsSerializer = new JavaScriptSerializer();
var result = jsSerializer.DeserializeObject(json);
Dictionary<string, object> obj2 = new Dictionary<string, object>();
obj2 = (Dictionary<string, object>)(result);
string trackName = obj2["trackname"].ToString();
Label3.Text = trackName;
}
}
}
}
解决方案
我认为从 API 调用返回的 json 如下所示:
{ 结果计数:数字,结果:数组 }
因此,字典中有 2 个值,一个用于键“resultCount”,一个用于键“results”。
你想要做的是反序列化结果数组,然后查询:
JavaScriptSerializer jsSerializer = new JavaScriptSerializer();
var result = jsSerializer.DeserializeObject(File.ReadAllText(@"C:\Users\Simon\Downloads\1.txt"));
Dictionary<string, object> obj2 = new Dictionary<string, object>();
obj2 = (Dictionary<string, object>)(result);
object[] resultsList = (object[])obj2["results"];
foreach (var r in resultsList)
{
Dictionary<string, object> obj3 = (Dictionary<string, object>) r;
string trackName = obj3["trackName"].ToString();
}
推荐阅读
- reactjs - 为什么从 redux 中删除项目它会删除商店中的所有项目
- ssis - SSIS:如何在类似条件下使用系统变量
- entity-framework - 有没有更好的方法在实体框架中执行这样的查询
- python - python ML算法在滑坡敏感性评估中的数据集问题
- c# - 使 LINQ 表达式不区分大小写
- python - 某些语言在 kivy 中未正确处理/显示!有什么关系?
- python - Pyomo 中的稀疏索引集
- yii - 在 YII2 中捕获验证失败的 Google Analytics 事件
- css - 中心 svg 表示行文本
- mongodb - $lookup 管道中的 $match 始终返回所有文档,而不是过滤