排名第一的是JSon,C#
本文关键字:JSon | 更新日期: 2023-09-27 18:24:52
我从服务器收到JSon:
1) 音频的数量
2..n)关于音频的信息
response: [312, {
aid: 217124599,
owner_id: 49794861,
artist: 'Hard Drum and Bass Pump Mix ',
title: 'жёсткий драм... ',
duration: 142,
url: 'http://cs4401.vk.me/u133328801/audios/55c4eefd8b0d.mp3',
lyrics_id: '66439474',
genre: 12
}, {
aid: 217122746,
owner_id: 49794861,
artist: 'Drum Trance ',
title: 'лёгкий драм-транс...',
duration: 209,
url: 'http://cs5042.vk.me/u139126516/audios/f5ebe6d0f847.mp3',
lyrics_id: '66430452',
genre: 12
}, ...
我做下一个:
1) 在上创建方案JSon
2) 获取值
public class JSonR
{
public List<Audio> response { get; set; }
}
public class Audio
{
public int aid { get; set; }
public int owner_id { get; set; }
public string artist { get; set; }
public string title { get; set; }
public int duration { get; set; }
public string url { get; set; }
public string lyrics_id { get; set; }
public int genre { get; set; }
}
var RespS = JsonConvert.DeserializeObject<JSonR>(responseFromServer);
如何获得第一个号码:312?
Helper方法
public static class JsonHelper
{
public static JToken ReadFrom(Stream stream)
{
using (var reader = new StreamReader(stream))
using (var jsonReader = new JsonTextReader(reader))
return JToken.ReadFrom(jsonReader);
}
}
用法
JToken token = JsonHelper.ReadFrom(responseFromServer);
int number = token["response"][0].ToObject<int>();
如果我错误地假设responseFromServer
是Stream
,而它实际上只是string
,那么你可以简单地这样做:
JToken token = JToken.Parse(responseFromServer);
难度
因为您的JSON数据使用异构的JSON数组,所以您需要采用类似于我上面给出的方法来获取数据。我不相信有任何"简单"的方法可以让JsonConvert.DeserializeObject<JSonR>
按照你想要的方式工作。
可以做的是:
JToken token = JsonHelper.ReadFrom(responseFromServer);
int number = token["response"][0].ToObject<int>();
List<Audio> audioList = token["response"]
.Children()
.Skip(1) //skip over number
.Select(child => child.ToObject<Audio>())
.ToList();