c# - 部分反序列化 JSON 以仅获取所需属性
问题描述
我在 JSON 格式中得到了很大的响应,我只需要 2 个字符串,这是我的 JSON 文件,我在其中减少了以便更好地阅读
{
"cdn_url": "https://f.vimeocdn.com",
"vimeo_api_url": "api.vimeo.com",
"request": {
"files": {
"progressive": [
{
"profile": 164,
"width": 622,
"mime": "video/mp4",
"fps": 25,
"url": "1047326445.mp4",
"cdn": "akamai_interconnect",
"quality": "360p",
"id": 1047326445,
"origin": "gcs",
"height": 360
},
{
"profile": 165,
"width": 932,
"mime": "video/mp4",
"fps": 25,
"url": "1047326437.mp4",
"cdn": "akamai_interconnect",
"quality": "540p",
"id": 1047326437,
"origin": "gcs",
"height": 540
}
]
}
},
"video": {
"version": {
"current": null,
"available": null
},
"height": 540,
"duration": 401,
"thumbs": {
"640": "712851375_640.jpg",
"960": "712851375_960.jpg",
"base": "712851375"
},
"id": 279550927,
"default_to_hd": 0,
"url": null,
"privacy": "disable",
"unlisted_hash": null
}
}
我从中删除了很多对象以便更好地阅读。我想要“url”:“1047326445.mp4”,来自视频对象中的“渐进式数组”和“640”变量的字符串。
protected void btnclick_Click(object sender, EventArgs e)
{
string normalURL = "279550927";
string urlJSONcall = "https://player.vimeo.com/video/" + normalURL + "/config";
string json = null;
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(urlJSONcall);
HttpWebResponse response = null;
try
{
response = (HttpWebResponse)request.GetResponse();
var responseStream = response.GetResponseStream();
if ((responseStream != null) && responseStream.CanRead)
{
using (var reader = new System.IO.StreamReader(responseStream))
{
json = reader.ReadToEnd();
LBresponse.Text = json;
}
}
}
finally
{
if (response != null)
{
response.Close();
}
}
var data = (JObject)JsonConvert.DeserializeObject(json);
}
}
由于嵌套对象,我无法解决它。
我不知道下一步该怎么做
解决方案
我通过这个得到了欲望的结果,
string json = null;
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(urlJSONcall);
HttpWebResponse response = null;
try
{
response = (HttpWebResponse)request.GetResponse();
var responseStream = response.GetResponseStream();
if ((responseStream != null) && responseStream.CanRead)
{
using (var reader = new System.IO.StreamReader(responseStream))
{
json = reader.ReadToEnd();
}
}
}
finally
{
if (response != null)
{
response.Close();
}
}
var datao = (JObject)JsonConvert.DeserializeObject(json);
//LBresponse.Text = data.ToString();
string urll = (string)datao["request"]["files"]["progressive"][0]["url"];
string thumbnailImage = (string)datao["video"]["thumbs"]["640"];
LBresponse.Text = urll.ToString();
lbltumb.Text = thumbnailImage.ToString();
}
推荐阅读
- xcode11 - Xcode 11 创建远程 Git 存储库但显示“正在加载帐户所有者”永远不会结束
- null - Unity 3D 警告 CS0414:现场
已分配,但从未使用过它的值 - python-3.x - 为什么我的 Python 3 代码不起作用?(类和对象)
- excel - Excel - 如何在不使用数组公式和辅助列的情况下将唯一值从一列提取到另一列?
- java - Spring Boot Embedded Undertow Server : java.io.IOException: UT000128: Remote peer closed connection before all data can be read
- java - axios 加载数据的速度不够快
- c# - Entity Framework 6 删除更新请求中不存在的所有行
- python - HTTPConnectionPool(host='xxxx', port=y):读取超时。(读取超时=无)在 nginx 服务器上?
- javascript - 在分页中过滤文本字段 Jquery
- html - 外部css文件在压缩文件夹中不起作用