C# 反序列化具有多个属性的JSON

C# 反序列化具有多个属性的JSON,c#,json,.net-4.0,deserialization,C#,Json,.net 4.0,Deserialization,这一次,我试图对请求的json响应进行反序列化。 完整的json可以在这里找到: 最好的解决方案是在路径[pages][pagenumber][ImageURL]中有一个包含所有缩放链接的字符串列表 我错过什么了吗 编辑:JSON代码 { "directBrochureUrl": "http://www.ofertia.com/catalogo-305846837", "id": 305846837, "pageCount": 8, "pages": { "1": {

这一次,我试图对请求的json响应进行反序列化。 完整的json可以在这里找到:

最好的解决方案是在路径[pages][pagenumber][ImageURL]中有一个包含所有缩放链接的字符串列表

我错过什么了吗

编辑:JSON代码

{
  "directBrochureUrl": "http://www.ofertia.com/catalogo-305846837",
  "id": 305846837,
  "pageCount": 8,
  "pages": {
    "1": {
      "imageUrls": {
        "normal": "http://static01.ofertia.com/catalogos/84e0a539-f687-4682-b6f8-b29e79f8de87/0/normal.v1.jpg",
        "zoom": "http://static01.ofertia.com/catalogos/84e0a539-f687-4682-b6f8-b29e79f8de87/0/large.v1.jpg",
        "zoomSize": "{1079,1600}"
      },
      "productOverlays": [

      ]
    },

  },
  "poll": {
    "hasPoll": false,
    "hasPollImage": null,
    "mobileLongImage": null,
    "mobileSquareImage": null,
    "pollUrl": null,
    "webImage": null
  },
  "retailerId": 84243242,
  "retailerName": "Dia Market",
  "sector": {
    "iconUrl": "http://static01.ofertia.com/theme/logo-100497.v71.png",
    "id": 100497,

  },
  "showAdsInVisualizer": false,
  "title": "Calidad y precio están muy cerca",
  "validFrom": "2014-09-11T00:00:00",
  "validUntil": "2014-09-24T23:00:00"
}
EDIT2请求代码:

HttpWebRequest request = (HttpWebRequest)WebRequest.Create("http://www.ofertia.com/api/v1/brochure/static/305846837");
            request.UserAgent = "Mozilla/5.0 (Windows NT 6.1; WOW64; rv:32.0) Gecko/20100101 Firefox/32.0";
            request.Headers.Set(HttpRequestHeader.AcceptLanguage, "en-US,en;q=0.5");
            request.Headers.Add("X-Requested-With", @"XMLHttpRequest");
            request.Referer = "http://www.ofertia.com/catalogo";
            request.KeepAlive = true;
            request.ContentType = "application/x-www-form-urlencoded";
            request.Accept = "application/json";

            try
            {
                using (WebResponse response = request.GetResponse())
                {
                    var responseValue = string.Empty;
                    // grab the response  
                    using (var responseStream = response.GetResponseStream())
                    {
                        using (var reader = new StreamReader(responseStream))
                        {
                            responseValue = reader.ReadToEnd();
                        }
                    }
                    if (responseValue != "")
                    {
                        Folheto jsonModel = JsonConvert.DeserializeObject<Folheto>(responseValue);
                        string _id = jsonModel.id;
                        string _nome = jsonModel.nome;
                        string _link_imagem = jsonModel.imagem;
                        int num_pag =jsonModel.pageCount;
                    }
                }
            }
            catch (WebException ex)
            {
                // Handle error
            }

好的,我找到了一个可行但并不完美的解决方案

首先,我需要获取允许我知道pdf总页数的属性:

FolhetoOfertia jsonModel = JsonConvert.DeserializeObject<FolhetoOfertia>(responseValue);
int num_pag = jsonModel.pageCount;
num_pag是让我在下一步循环页面的变量

第二,我解析来自请求的答案,答案在变量responseValue中,并使用它正在搜索的页面的编号进行循环,无论页面的数量是多少,这都会起作用,因为我得到了实际值,不需要使用假高数字

var jObj = JObject.Parse(responseValue);
for (int pag = 1; pag < num_pag + 1; pag++)
    {
        string valores = jObj["pages"][pag.ToString()]["imageUrls"]["zoom"].ToString();
        lista_links.Add(valores);
    }

有了这个列表,我创建的包含属性zoom中我想要获取的链接的列表将被填充为每个pdf的所有页面链接,这在您的示例中是大量JSON。如果您提供一个简短但完整的程序,用一小段JSON来演示这个问题,这将非常有帮助。它不是原始的JSON,而是一些格式奇怪的版本,这并没有帮助。很抱歉,没有找到正确的格式。pastebin代码是我试图阅读的真正完整答案,我只是用postman得到了一个更漂亮、更容易阅读的答案版本。如果你知道我可以把它粘贴到哪里,那么它很容易阅读,我会在这里发布,同时我可以截图第1部分第2部分你根本不应该把它放在粘贴箱里。你应该有一个简短的例子,可以直接包括在问题中。您只需要大约20行代码和10行JSON(如果需要的话)-我们应该能够将JSON复制到一个文件中,或者只是将其包含在代码中,将代码复制并粘贴到另一个文件中,编译并运行。屏幕截图真的不能帮助我们重现问题。抱歉,我只是想帮你把所有答案都放进去,我编辑了json答案,其中包含了一些基本信息,以及我想从中获取值的属性。你还没有提供一个简短但完整的程序,您的JSON显然包含多个结果——您对zoom的价值有什么期望?几乎可以肯定,您应该有一个Pages属性,它是一个字符串到页面的字典,其中Page是另一个类,它有一个图像URL列表,每个URL都有一个缩放属性。。。基本上,您的代码根本不代表JSON的结构。您的JSON也无效或不完整,这对我们没有帮助。
var jObj = JObject.Parse(responseValue);
for (int pag = 1; pag < num_pag + 1; pag++)
    {
        string valores = jObj["pages"][pag.ToString()]["imageUrls"]["zoom"].ToString();
        lista_links.Add(valores);
    }