【问题标题】:JSON.Net and LinqJSON.Net 和 Linq
【发布时间】:2012-10-15 05:35:22
【问题描述】:

在 linq 方面我是个新手,我正在开发一个使用 json.net 解析 json 提要的网站。我遇到的问题是我需要能够从 json 提要中提取多个字段并将它们用于 foreach 块。 json.net 的文档只显示了如何只提取一个字段。在查看了 linq 文档后,我做了一些变化,但我没有找到任何最有效的方法。到目前为止,这是我所得到的:

 WebResponse objResponse;
    WebRequest objRequest = HttpWebRequest.Create(url);
    objResponse = objRequest.GetResponse();
    using (StreamReader reader = new StreamReader(objResponse.GetResponseStream()))
    {
        string json = reader.ReadToEnd();
        JObject rss = JObject.Parse(json);

        var postTitles =
            from p in rss["feedArray"].Children()
            select (string)p["item"], 
            //These are the fields I need to also query
            //(string)p["title"], (string)p["message"];

        //I've also tried this with console.write and labeling the field indicies for each pulled field
        foreach (var item in postTitles)
        {
            lbl_slides.Text += "<div class='slide'><div class='slide_inner'><div class='slide_box'><div class='slide_content'></div><!-- slide content --></div><!-- slide box --></div><div class='rotator_photo'><img src='" + item + "' alt='' /></div><!-- rotator photo --></div><!-- slide -->";
        }
    }

有没有人见过如何从 json 提要中提取多个字段并将它们用作 foreach 块的一部分(或类似的东西?

【问题讨论】:

    标签: json json.net


    【解决方案1】:

    您不能像这样(如下)直接在您的 foreach 循环中引用字段吗?我不确定您是否真的需要此处的 linq 查询。 (注意,为了清楚起见,我已经为这个例子剪掉了你的大部分 html。你需要根据你的实际项目进行调整,做适当的 HTML 转义等)

    foreach (var p in rss["feedArray"].Children())
    {
        lbl_slides.Text += string.Format(
            "<img src='{0}' title='{1}'/><span>{2}</span>",
            (string)p["item"],
            (string)p["title"],
            (string)p["message"]);
    }
    

    同样的事情使用 linq 看起来像这样:

    var postTitles =
        from p in rss["feedArray"].Children()
        select new
        {
            Src = (string)p["item"],
            Title = (string)p["title"],
            Message = (string)p["message"],
        }
    
    foreach (var item in postTitles)
    {
        lbl_slides.Text += string.Format(
            "<img src='{0}' title='{1}'/><span>{2}</span>",
            item.Src, item.Title, item.Message);
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-24
      • 2010-11-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多