C# 从另一个类获取列表的值
我试图获取歌曲信息,这是从JSON文件解析。 这是我的C# 从另一个类获取列表的值,c#,json,C#,Json,我试图获取歌曲信息,这是从JSON文件解析。 这是我的音乐类,用于解析数据并将数据写入列表 我想把这个列表分配给一个普通的列表,但不能这样做,我只得到100条记录的标题AsemblyName.Namespace.Music+TrackData(在我的本地库中) 所以我想把所有的值放在一个字符串中(每首歌曲的所有数据都在一个字符串中),并且能够获取所有歌曲的数据,而不仅仅是第一首歌曲的数据 尝试了很多事情,但似乎没有任何帮助。对不起,这个问题可能比较简单,但我是C语言的新手# 提前感谢。首先,您确
音乐
类,用于解析数据并将数据写入列表
我想把这个列表分配给一个普通的列表,但不能这样做,我只得到100条记录的标题AsemblyName.Namespace.Music+TrackData
(在我的本地库中)
所以我想把所有的值放在一个字符串中(每首歌曲的所有数据都在一个字符串中),并且能够获取所有歌曲的数据,而不仅仅是第一首歌曲的数据
尝试了很多事情,但似乎没有任何帮助。对不起,这个问题可能比较简单,但我是C语言的新手#
提前感谢。首先,您确定您的Json数据文件完好无损(在文本编辑器中打开并验证)。第二,你说的是“将这个列表分配给一个普通的列表,但不能这样做”——展示你已经尝试了什么。第三,为什么要将关于一首歌曲的所有信息放在一个巨大的字符串中,特别是因为类TrackData已经提供了这些整洁的属性?重新标记。它似乎与WPF或Metro设计语言没有任何关系。
public class Music
{
[DataContract]
public class TrackData
{
[DataMember]
public int id { get; set; }
[DataMember]
public int owner_id { get; set; }
[DataMember]
public string artist { get; set; }
[DataMember]
public string title { get; set; }
[DataMember]
public int duration { get; set; }
[DataMember]
public string url { get; set; }
[DataMember]
public int genre_id { get; set; }
[DataMember]
public int? lyrics_id { get; set; }
[DataMember]
public int? album_id { get; set; }
}
[DataContract]
public class JsonData
{
[DataMember]
public int count { get; set; }
[DataMember]
public List<TrackData> items { get; set; }
}
[DataContract]
public class JsonResponse
{
[DataMember]
public JsonData response { get; set; }
}
public static JsonResponse Deserialize(String Json)
{
DataContractJsonSerializer ser = new DataContractJsonSerializer(typeof(JsonResponse));
MemoryStream stream1 = new MemoryStream(Encoding.UTF8.GetBytes(Json));
JsonResponse result = (JsonResponse)ser.ReadObject(stream1);
return result;
}
}
Music.JsonResponse Response = Music.Deserialize(await GetAudio()); // This is working like a charm, so no need to rewrite this function
Music.JsonData Data = Response.response; // Assigning Parsed JSON to the class and later to TrackData
Music.TrackData Track = Data.items.FirstOrDefault(); // I need data for all of the tracks, not only for the first one
MessageDialog ResultDialog = new MessageDialog(Track.artist); // So im getting only first value of the List
ResultDialog.ShowAsync();