Извлечение данных из файла json с помощью команды powershell - PullRequest
0 голосов
/ 25 ноября 2018

Я пытаюсь получить данные из моего json файла, но мой код все еще не работает.Есть ли у вас предложения ?

JSON-файл:

  "nodes": [

    {

      "id": "elfe",

      "apps": [

        {

          "id": "man1",

          "age" = "5"

          "power" ="strenght"

        },

        {

          "id": "man2",

          "age" = "10"

          "power" ="strenght"

        }],

      "id": "monster",


      "apps": [

        {

          "id": "man3",

          "age" = "5"

          "power" ="strenght"

        },

        {

          "id": "man4",

          "age" = "10"

          "power" ="strenght"

        }],

И вот мой код в PowerShell.Я просто хочу получить man1, man2, man3, man4 значений в моем файле для каждого id эльфа и монстра, подобного этому:

man1
man2 

в одном файле и вдругой файл:

man3
man4

Мой пакетный скрипт:

Powershell -Nop -C "(Get-Content .\config.json |ConvertFrom-Json).Nodes | Select-Object -ExpandProperty id | Where-Object id -eq elfe" >> file.txt

РЕДАКТИРОВАТЬ: я не могу изменить свой файл JSON ...

1 Ответ

0 голосов
/ 25 ноября 2018

Ваш json недействителен, ниже приведена исправленная версия с извлечением данных:

$json = @" 
{
 "nodes":[

    {

      "id":"elfe",

      "apps":[

        {

          "id":"man1",

          "age":5,

          "power":"strenght"

        },

        {

          "id":"man2",

          "age":10,

          "power":"strenght"

        }]},

     { "id":"monster",


      "apps":[

        {

          "id":"man3",

          "age" :"5",

          "power":"strenght"

        },

        {

          "id":"man4",

          "age":"10",

          "power":"strenght"

        }]}
    ]}
"@

$data = $json | ConvertFrom-Json 

$data.nodes | where {$_.id -eq "elfe"} | foreach {$_.apps.id >> "elfe.txt"}

Но, вероятно, у вас просто были проблемы с цитированием этой команды.Ниже рабочая версия.Я заменил >> на тройник - он перезапишет выходной файл, а также напечатает результаты на экране.

powershell -nop  -c "(cat test.json | ConvertFrom-Json).nodes | where {$_.id -eq 'elfe'} | foreach {$_.apps.id} | tee out.txt"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...