上课的价值无法到达?

时间:2014-02-06 03:28:39

标签: c# windows-8

在我的应用程序中,我正在使用Web请求从Web源中提取json数据并将其反序列化到我的类中。然后我想从该数据中提取特定值,但我发现我无法使用当前代码。

这是我的课程

public class Result
{
    public int id { get; set; }
    public string name { get; set; }
    public int trackNumber { get; set; }
    public string title { get; set; }
    public List<Artist> artists { get; set; }
    public List<Genre> genres { get; set; }
    public Release release { get; set; }
    public Label label { get; set; }
    public Images images { get; set; }
    public int downloadId { get; set; }
    public string downloadUrl { get; set; } // value i'm trying to retrieve
}

public class RootObject
{
    public Metadata metadata { get; set; }
    public ObservableCollection<Result> results { get; set; }
}

和反序列化数据的代码然后尝试将所需的值存储到字符串变量

RootObject data = JsonConvert.DeserializeObject<RootObject>(response);

string downloadUrl = data.results.downloadUrl; // downloadUrl is unreachable

有没有更好的方法来获得我需要的价值?谢谢你的帮助。

2 个答案:

答案 0 :(得分:0)

您有一组Result个对象,而不是单个实例。

您可以使用LINQ获取列表中每个downloadUrl的所有Result值。

var allUrls = data.results.Select(x => x.downloadUrl);  // a list of url strings

从那里,您可以在其上调用任何其他LINQ method,例如SingleOrDefault()(获取唯一记录),FirstOrDefault(获取第一条记录),Where (指定您想要的网址)等。

答案 1 :(得分:0)

结果是一个集合。试试那个

string downloadUrl = data.results[0].downloadUrl;

它将从集合的第一个项目中为您提供downloadUrl。