Скрипт Powershell для получения данных из файла json - PullRequest
0 голосов
/ 22 октября 2019

Мне нужно извлечь данные с определенным заголовком из файла json и вывести их в файл csv

$data = (Get-Content "C:\Users\QVL6\Downloads\express-ordering-web- 
variables.json" | ConvertFrom-Json)

получить данные

 [PSCustomObject[]]$data = @(
    [PSCustomObject]@{
    Name = 'Name'
    Type = 'Type'
    Value = 'Value'
    Description = 'Description'
}

)

$path = C:\Users\QVL6\
$data | Select-Object -Property Name, Type, Value, Description | Export -Csv 
-Path .\data.csv -NoClobber -NoTypeInformation

Файл Json:

  {
  "Id": "variableset-Projects-174",
  "OwnerId": "Projects-174",
  "Version": 23,
  "Variables": [
    {
      "Id": "dfd06d9f-5ab5-0b40-bfed-d11cd0d90e62",
      "Name": "apiConfig:orderCommandUrl",
      "Value": "http://dev.order-service.local",
      "Description": null,
      "Scope": {
        "Environment": [
          "Environments-63"
        ]
      },
      "IsEditable": true,
      "Prompt": null,
      "Type": "String",
      "IsSensitive": false
    },
    {
      "Id": "252a19a0-4650-4920-7e66-39a80c1c49ec",
      "Name": "apiConfig:orderCommandUrl",
      "Value": "http://qa.order-service.local",
      "Description": null,
      "Scope": {
        "Environment": [
          "Environments-63",
          "Environments-64"
        ]
      },
      "IsEditable": true,
      "Prompt": null,
      "Type": "String",
      "IsSensitive": false
    },

Я хочу вытащить все значения в поле Имя

1 Ответ

0 голосов
/ 22 октября 2019

Get-Content уже возвращает строку, чтобы вы могли преобразовать вывод непосредственно в json. $ data = Get-Content "C: \ Users \ myFile \ Downloads \ express-ordering-web-variables.json" |ConvertFrom-Json

Переменная $data уже является объектом, поэтому вам не нужно преобразовывать ее снова в CSV. Вы можете напрямую выбрать нужные заголовки и экспортировать их в CSV.

$data = Get-Content "C:\Users\myFile\Downloads\express-ordering-web- 
variables.json" | ConvertFrom-Json

#get some random data
[PSCustomObject[]]$data = @(
    [PSCustomObject]@{
        H1 = 'Test'
        H2 = 'Test2'
    },
    [PSCustomObject]@{
        H1 = 'Test'
        H2 = 'Test2'
    }
)

$data | Select-Object -Property H1, H2 | Export-Csv -Path $Path -NoClobber -NoTypeInformation
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...