【问题标题】:How to exclude data from json file to convert into csv file powershell如何从 json 文件中排除数据以转换为 csv 文件 powershell
【发布时间】:2020-10-15 00:55:28
【问题描述】:

我想将我的 json 文件转换为 csv -

{
  "count": 28,
  "value": [
  {
    "commitId": "65bb6a911872c314a9225815007d74a",
    "author": {
    "name": "john doe",
    "email": "john.doe@gmail.com",
    "date": "2020-06-09T17:03:33Z"
     },
    "committer": {
    "name": "john doe",
    "email": "john.doe@gmail.com",
    "date": "2020-06-09T17:03:33Z"
    },
    "comment": "Merge pull request 3 from dev into master",
    "changeCounts": {
    "Add": 6,
    "Edit": 0,
    "Delete": 0
     },
     "url": "https://dev.azure.com/",
     "remoteUrl": "https://dev.azure.com/"
     },
    {
     "commitId": "bdcb4a1e1e671c15333eacc31aa9795fe32",
     "author": {
     "name": "john doe",
     "email": "john.doe@gmail.com",
     "date": "2020-06-09T17:03:33Z"
      },
     "committer": {
     "name": "john doe",
     "email": "john.doe@gmail.com",
     "date": "2020-06-09T17:03:33Z"
     },
     "comment": "Updated FGDH",
     "changeCounts": {
     "Add": 0,
     "Edit": 1,
     "Delete": 0
      },
     "url": "https://dev.azure.com/",
     "remoteUrl": "https://dev.azure.com/"
    }
  ]
 }

我不想要 CSV 文件中的所有字段。我只想要 commitid、commiter.name、commiter.date 和评论。

 Get-Content "\commitinfo.json" -Raw | ConvertFrom-Json | Select -Expand value |Export-Csv 
 "\commitinfo.csv" 

有了这个我得到了所有的数据,我怎样才能得到选定的数据?

另一个json文件-

{
 "value": [
  {
    "id": "5c264dd2-bbcf-4537-8a63-19a0a4d2dc",
    "name": "Develop",
    "url": "https://dev.azure.com/",
    "project": {
    "id": "0042dc5c-fd13-4e3c-bfd7-7feb52e287",
    "name": "test",
    "url": "https://dev.azure.com/",
    "state": "wellFormed",
    "revision": 11,
    "visibility": "private",
    "lastUpdateTime": "2020-04-15T04:04:30.01Z"
    },
    "defaultBranch": "refs/heads/master",
    "size": 55438,
    "remoteUrl": "https://dev.azure.com",
    "sshUrl": "git@ssh.dev.azure.com:v3",
    "webUrl": "https://dev.azure.com/"
   },
   {
    "id": "3219e8e2-281d-40ad-81c8-1cecf8",
    "name": "automation",
    "url": "https://dev.azure.com/",
    "project": {
    "id": "0e2df786-94a0-42c8-b068-c2656b",
    "name": "automation",
    "url": "https://dev.azure.com/",
    "state": "wellFormed",
    "revision": 19,
    "visibility": "private",
    "lastUpdateTime": "2020-05-02T03:32:50.937Z"
    },
    "size": 0,
    "remoteUrl": "https://dev.azure.com/",
    "sshUrl": "git@ssh.dev.azure.com:v3",
    "webUrl": "https://dev.azure.com/"
    }
  ]
 }

从这个文件中我只想选择大小为 - 0 的项目,CSV 应该是这样的

     name   size 
     a       0
     b       0

【问题讨论】:

    标签: json powershell export-to-csv


    【解决方案1】:

    注意:为简洁起见,将以下命令通过管道连接到Export-Csv 被省略。

    您需要将Select-Objectcalculated properties 一起使用:

    (Get-Content commitinfo.json -Raw | ConvertFrom-Json).value |
      Select-Object commitid, 
                    @{n='committerName'; e={ $_.committer.name } }, 
                    @{n='committerDate'; e={ $_.committer.date } }, 
                    comment
    

    在第二种情况下,添加Where-Object以过滤感兴趣的对象:

    (Get-Content other.json -Raw | ConvertFrom-Json).value |
      Where-Object size -eq 0 |
        Select-Object name, size
    

    【讨论】:

      猜你喜欢
      • 2021-03-31
      • 2020-04-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-09-12
      • 2020-07-28
      • 2019-02-23
      相关资源
      最近更新 更多