1

JSON ペイロードから簡単/高速に解析可能なオブジェクト/PSCustomObject を作成したい場合、コードのパフォーマンスを向上させるにはどうすればよい$JSONですか?

私が受け取る PAYLOAD の構造の例は次のとおりです。

[
    {
        "name":  "system.enablenetflow",
        "value":  "false"
    },
    {
        "name":  "system.deviceGroupId",
        "value":  "186,3060"
    },
    {
        "name":  "system.prefcollectorid",
        "value":  "144"
    },
    {
        "name":  "system.collectorplatform",
        "value":  "windows"
    }
]

ご覧のとおり、非常に面倒な形式になっています。

私が解析しようとしているペイロードは、上記の 4 つだけではなく、はるかに大きく、これらの名前/値オブジェクトの 500 から 50000 までの可変数であることに注意してください。

#################################################### ########################

私の目標

後で簡単に解析できるように、これをキーと値のペアのシナリオに変えるには

これではありません:

私がしなければならないJSONで$JSON.where({$_.name -eq "system.enablenetflow"}).value

はい、これ:

$obj作成した新しい変数で値を取得できるようにするという最終状態にしたい$obj."system.enablenetflow"

#################################################### ########################

超遅い私の現在の試み

私は次のことをしました:

  1. 空の PSCustomObject を作成し、変数として保存します$obj
  2. $JSONJSON 配列を反復処理する変数に対してforeach メソッドを実行しました
  3. $obj「名前」を PropertyName に、「値」を PropertyValue に設定して、メンバーを追加します。

私のコードのサンプルは次のとおりです。

$obj = [PSCustomObject] @{}
$json.foreach({
   $thisitem = $_
   $obj | Add-member -NotePropertyName $($thisitem.name) -NotePropertyValue $($thisitem.name)
})

どうすればこれを速くすることができますか?

4

1 に答える 1