C# 如何从复杂的JSON对象中获取值
我正在从接收JSON请求 现在,我从JSON中获得了以下类:C# 如何从复杂的JSON对象中获取值,c#,.net,json,json.net,C#,.net,Json,Json.net,我正在从接收JSON请求 现在,我从JSON中获得了以下类: public class RootObject { public int id { get; set; } public string title { get; set; } public string description { get; set; } public string uri { get; set; } public List<Episode> episodes { g
public class RootObject
{
public int id { get; set; }
public string title { get; set; }
public string description { get; set; }
public string uri { get; set; }
public List<Episode> episodes { get; set; }
public Thumbnails2 thumbnails { get; set; }
public string timestamp { get; set; }
public List<object> genres { get; set; }
public string origin_code { get; set; }
}
public class Thumbnails2
{
public string c_220_160 { get; set; }
public string c_102_102 { get; set; }
public string c_180_130 { get; set; }
public string c_110_80 { get; set; }
public string xl { get; set; }
public string large { get; set; }
public string medium { get; set; }
public string small { get; set; }
public string c_320_300 { get; set; }
public string c_640_600 { get; set; }
public string c_95_70 { get; set; }
public string c_190_140 { get; set; }
public string c_280_200 { get; set; }
public string c_560_400 { get; set; }
}
但得到一个例外意味着其他东西:
'对与指定绑定约束匹配的类型'Viki.MainWindow'调用构造函数时引发异常。'
行号“3”和行位置“9”
我可以使用LINQ获取这些值吗?您不需要第二次反序列化
JsonConvert.DeserializeObject(缩略图)代码>
任用
foreach (var item in dynObj)
{
Console.WriteLine(item.title);
Console.WriteLine(item.thumbnails.small);
}
或
使用(var wc=new WebClient())
{
var json=wc.DownloadString(“http://www.viki.com/api/v2/channels.json");
var rootObj=JsonConvert.DeserializeObject(json);
var obj=rootObj.Select(r=>new
{
Title=r.Title,
缩略图=r.thumbnails.small
}).ToArray();
}
使用数据契约和
到目前为止,我只在从文件中的JSON对象进行反序列化时使用过它,但它非常简单
只需使用atribute[DataContract]声明类,并使用[DataMember]反序列化每个成员
e、 g.(来自我的代码)
DataContractJsonSerializer将递归地构建整个对象,包括数组、列表和字典
最好的
托马斯您的foreach循环中有一个拼写错误。
foreach (var item in dynObj)
{
Console.WriteLine(item.title);
Console.WriteLine(item.thumbnails.small);
}
using (var wc = new WebClient())
{
var json = wc.DownloadString("http://www.viki.com/api/v2/channels.json");
var rootObj = JsonConvert.DeserializeObject<RootObject[]>(json);
var obj = rootObj.Select(r=>new
{
Title = r.title,
Thumbnail = r.thumbnails.small
}).ToArray();
}
[DataContract]
public class CharacteristicManager
{
[DataMember(Order = 1)]
public Characteristic[] characteristics;
private Dictionary<String, Characteristic> characteristic_dictionary;
}
DataContractJsonSerializer ser = new DataContractJsonSerializer(typeof(CharacteristicManager));
CharacteristicManager cm = (CharacteristicManager)ser.ReadObject(stream);