JSON.Net 和 Linq

标签 json json.net

对于 linq,我是个新手,我正在开发一个使用 json.net 解析 json feed 的网站。我遇到的问题是我需要能够从 json feed 中提取多个字段并将它们用于 foreach block 。 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 feed 中提取多个字段并将它们用作 foreach block (或类似的东西)的一部分?

最佳答案

您不能像这样(如下所示)直接在 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);
}

关于JSON.Net 和 Linq,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12886421/

相关文章:

c# - 自定义转换器重写 ContractResolver

c# - 在 C# 中将查询字符串序列化为 Json - 值不显示,仅显示键。为什么?

c# - 带有 TypeNameHandling=auto 的 IEnumerable 的 Json.Net 序列化

sql - 渲染的Json与SQL混合

json - Azure 移动服务 API - Exports.put 导致阿拉伯文本损坏

c# - 使用 JSON 序列化/反序列化 TimeSpan

c# - 使用 Json.NET 从 WebService 反序列化大型 json

android - 使用 GSON 进行 JSON 反序列化

javascript - 使用 PHP 在 Highcharts 中导入数据

java - 如何在java中的json对象值中显示反斜杠 - 非法转义JSONException