C# 如何从复杂的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

我正在从接收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 { 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);