【问题标题】:Linq query to Json stringLinq 查询到 Json 字符串
【发布时间】:2017-04-09 19:57:01
【问题描述】:

从一个 JObject 开始,我可以得到我感兴趣的数组:

JArray partial = (JArray)rssAlbumMetadata["tracks"]["items"];

第一个问题:“部分”包含很多我不感兴趣的属性。 我怎样才能只得到我需要的东西?

第二个问题:一旦成功完成第一个任务,我将得到一个包含重复项的 JArray。我怎样才能得到唯一的? 结果应该是这样的

{
'composer': [
                {
                'id': '51523',
                'name': 'Modest Mussorgsky'
                },
                {
                'id': '228918',
                'name': 'Sergey Prokofiev'
                },
        ]
}

让我从以下内容开始:

[
  {
    "id": 32837732,
    "composer": {
      "id": 245,
      "name": "George Gershwin"
    },
    "title": "Of Thee I Sing: Overture (radio version)"
  },
  {
    "id": 32837735,
    "composer": {
      "id": 245,
      "name": "George Gershwin"
    },
    "title": "Concerto in F : I. Allegro"
  },
  {
    "id": 32837739,
    "composer": {
      "id": 245,
      "name": "George Gershwin"
    },
    "title": "Concerto in F : II. Adagio"
  }
]

【问题讨论】:

  • 您应该包含您拥有的 JSON 以及您期望获得的内容。这将帮助人们帮助你

标签: c# json linq json.net


【解决方案1】:

第一个问题:

我怎样才能只得到我需要的东西?

没有什么神奇的,您需要读取整个 JSON 字符串,然后查询对象以找到您要查找的内容。如果您需要,则无法读取部分 JSON。您没有提供数据是什么样子的示例,因此无法指定如何查询。

我猜的第二个问题是:如何对对象数组的内容进行重复数据删除?

同样,我没有您的对象的完整视图,但这个示例应该能够向您展示 - 按照您的要求使用 Linq:

var items = new []{new {id=1, name="ali"}, new {id=2, name="ostad"}, new {id=1, name="ali"}};
var dedup = items.GroupBy(x=> x.id).Select(y => y.First()).ToList();
Console.WriteLine(dedup);

【讨论】:

  • 没有更多的cmets ...请帮助!谢谢。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多