首页 > 解决方案 > 部分反序列化 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);

    }
}

由于嵌套对象,我无法解决它。

我不知道下一步该怎么做

标签: c#asp.netjson

解决方案


我通过这个得到了欲望的结果,

        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();
    }

推荐阅读