首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Powershell ConvertFrom-Json:根据属性名选择嵌套数组的值

Powershell ConvertFrom-Json:根据属性名选择嵌套数组的值
EN

Stack Overflow用户
提问于 2021-04-04 03:32:41
回答 1查看 317关注 0票数 1

我有一个json文件,我正尝试使用powershell将其导出到csv,但我只需要某些嵌套值。它看起来如下所示:

代码语言:javascript
复制
[
   {
      "ItemName": "A",
      "ItemID": "I001",
      "ItemDate": "2021-03-01",
      "ItemValue": "1000",
      "ItemTags": [
         {
            "Name": "First tag name",
            "Value": "medium"
         },
         {
            "Name": "Another tag name",
            "Value": "red"
         },
         {
            "Name": "Tag 3",
            "Value": null
         },
         {
            "Name": "Tag 4",
            "Value": "Yes"
         }
      ]
   },
   {
      "ItemName": "B",
      "ItemID": "I002",
      "ItemDate": "2021-02-01",
      "ItemValue": "3000",
      "ItemTags": [
         {
            "Name": "First tag name",
            "Value": "best"
         },
         {
            "Name": "Another tag name",
            "Value": "green"
         },
         {
            "Name": "Tag 3",
            "Value": null
         },
         {
            "Name": "Tag 4",
            "Value": "No"
         }
      ]
   }
]

嵌套的"ItemTags“部分是我遇到麻烦的地方。实际的json文件有几十个项目标签,它们的顺序可能会有所不同,所以我想要做的只是根据ItemTag的“名称”选择它们,例如选择ItemTag值,其中ItemTag名称是Tag 4。

我只能按照这样的顺序来做:

代码语言:javascript
复制
$obj1 = Get-Content -Path "C:\Temp\sample.json"  | ConvertFrom-Json
$obj1 | select ItemName, ItemID, ItemDate, ItemValue, @{Name = 'Tag 4'; Expression ={$_.ItemTags[3].Value}} | Export-CSV "C:\Temp\items.csv" -NoTypeInformation

但同样,因为ItemTags排序可能每天都不同,所以这不能完全做到这一点。我如何修改它以根据"Tag 4“的ItemTag名称进行选择?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-04-04 04:33:18

这对我来说很有效:

代码语言:javascript
复制
Expression = { ($_.ItemTags | Where-Object Name -eq 'Tag 4').Value }

通过仅指定$_.ItemTags,我们创建了一个包含所有ItemTags对象的数组。使用Where-Object,我们只选择这些元素,它们的Name成员等于'Tag 4'。最后,我们从生成的元素中获得Value成员。请注意,当有多个匹配元素时,这将是一个数组,这对于您的样本数据('Yes','No')是正确的。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66935154

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档