Powershellは反復せずにJSONオブジェクトを直接参照します

ソウルシャイン

ここでPowerShellを学習するのは初めてで、指定されたスクリプト内に自己が含まれている限り、任意のソリューションにオープンです

これに関するドキュメントで何かを見つけるのは本当に難しいです、それはおそらく何もないことを意味しますか?

PSバージョン5.1

ビルドバージョン:10.0.17134

特定のJSON標準またはファイル設定は不明ですが、例としてこれを使用できます。

{
  "foo" : ["foo1", "foo2", "foo3"],
  "bar" : {
     "bar-foo" : 20,
     "bar-bar" : {
       "bar-bar-foo : "here"
     }
   }
}

事前にプロパティを知っているので、JSON KVPに直接移動したいと思います。これは、完全にネストされたパスです。

たとえば、入力引数は次のようになります。

.\ScriptName -JsonProp ["bar"]["bar-bar"]["bar-bar-foo"]

私のスクリプトは現在使用してConvertTo-Jsonおり、ソースは任意の.jsonファイルですが、jsonオブジェクトを明示的にナビゲートするためのより簡単でわかりやすい方法があれば、私はすべての耳です。

目標は、そのプロパティの値を変更してファイルに書き出すことです。

$json = Get-Content -Raw -Path $path | ConvertFrom-Json

$json.$JsonProp = "there"

私の知る限り、Jsonオブジェクトはドット表記を使用する必要がありますが、解決策のない文字列でそれを試しました。たとえば、パラメーターを分割します。

.\ScriptName -JsonProp bar.bar-bar.bar-bar-foo

$json.$JsonProp = "there"

私がこのトピックについて話している間、PowerShellに関する文献についての推奨事項があれば、私に知らせてください。

行進

これが1つの方法です:

$newValue = "there"
Invoke-Expression ('$json.' + $JsonProp + ' = $newValue')

引数に引用符を含める必要があります。

.\ScriptName -JsonProp "bar.'bar-bar'.'bar-bar-foo'"

タイプミスやセキュリティの問題を防ぐために、たとえば単純な正規表現チェックを使用して、事前に引数を確認する必要があります。

# (Note: This is just a quick example. Not pretty or complete, but does the job.)
if ($JsonProp -notmatch '^([a-zA-Z0-9_\-]+|''[a-zA-Z0-9_\-"]+''|"[a-zA-Z0-9_\-'']+")(\.([a-zA-Z0-9_\-]+|''[a-zA-Z0-9_\-"]+''|"[a-zA-Z0-9_\-'']+"))*$') {
    throw "Invalid json property."
}

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

反復せずにDataFramedatetime.datetimeオブジェクトを評価します

分類Dev

間接参照を追加せずに、ループの複数の反復で同じ可変特性オブジェクトを渡すことはできますか?

分類Dev

JSON配列オブジェクトを反復します

分類Dev

JSONオブジェクトの配列を反復します

分類Dev

ngForでJsonオブジェクトを反復します

分類Dev

JSONのオブジェクトを反復処理します

分類Dev

jsonオブジェクトを反復処理します

分類Dev

自己参照を使用してオブジェクトを反復処理します

分類Dev

PHP-jsonオブジェクトを再帰的に反復します

分類Dev

Java:反復せずに2つのJSONオブジェクトをマージする

分類Dev

次の反復の前に一時停止してJSONオブジェクトを反復します

分類Dev

オブジェクトを反復可能にしますか?

分類Dev

TypeError: 'type'オブジェクトは反復可能ではありません-オブジェクトインスタンスを反復処理します

分類Dev

オブジェクトの配列を反復処理しているときに、オブジェクトの参照を削除します

分類Dev

List <Student>から、反復せずに名前が一致するStudentオブジェクトをフェッチします(Java)

分類Dev

List <Student>から、反復せずに名前が一致するStudentオブジェクトをフェッチします(Java)

分類Dev

反復せずにハッシュセット内のオブジェクトに対して操作を実行することは可能ですか?

分類Dev

JSONオブジェクトのリストを反復処理します

分類Dev

反復しないJSONオブジェクトから値を取得します

分類Dev

3次元JSONオブジェクトを作成して反復します

分類Dev

Matplotlib ArtistAnimationはTypeErrorを出します: 'AxesImage'オブジェクトは反復可能ではありません

分類Dev

'ListingGenerator'オブジェクトはASYNCPRAWを使用して反復できません

分類Dev

jsonカスタムオブジェクトを反復処理します

分類Dev

角度6でJSONオブジェクトを反復処理します

分類Dev

blazeでjsonオブジェクト配列を反復処理します

分類Dev

Angular2のJsonオブジェクトを反復処理します

分類Dev

角度5でJSONオブジェクトの応答を反復します

分類Dev

jsonと構築pythonオブジェクトを反復処理します

分類Dev

JSONオブジェクトを適切に反復する方法は?

Related 関連記事

  1. 1

    反復せずにDataFramedatetime.datetimeオブジェクトを評価します

  2. 2

    間接参照を追加せずに、ループの複数の反復で同じ可変特性オブジェクトを渡すことはできますか?

  3. 3

    JSON配列オブジェクトを反復します

  4. 4

    JSONオブジェクトの配列を反復します

  5. 5

    ngForでJsonオブジェクトを反復します

  6. 6

    JSONのオブジェクトを反復処理します

  7. 7

    jsonオブジェクトを反復処理します

  8. 8

    自己参照を使用してオブジェクトを反復処理します

  9. 9

    PHP-jsonオブジェクトを再帰的に反復します

  10. 10

    Java:反復せずに2つのJSONオブジェクトをマージする

  11. 11

    次の反復の前に一時停止してJSONオブジェクトを反復します

  12. 12

    オブジェクトを反復可能にしますか?

  13. 13

    TypeError: 'type'オブジェクトは反復可能ではありません-オブジェクトインスタンスを反復処理します

  14. 14

    オブジェクトの配列を反復処理しているときに、オブジェクトの参照を削除します

  15. 15

    List <Student>から、反復せずに名前が一致するStudentオブジェクトをフェッチします(Java)

  16. 16

    List <Student>から、反復せずに名前が一致するStudentオブジェクトをフェッチします(Java)

  17. 17

    反復せずにハッシュセット内のオブジェクトに対して操作を実行することは可能ですか?

  18. 18

    JSONオブジェクトのリストを反復処理します

  19. 19

    反復しないJSONオブジェクトから値を取得します

  20. 20

    3次元JSONオブジェクトを作成して反復します

  21. 21

    Matplotlib ArtistAnimationはTypeErrorを出します: 'AxesImage'オブジェクトは反復可能ではありません

  22. 22

    'ListingGenerator'オブジェクトはASYNCPRAWを使用して反復できません

  23. 23

    jsonカスタムオブジェクトを反復処理します

  24. 24

    角度6でJSONオブジェクトを反復処理します

  25. 25

    blazeでjsonオブジェクト配列を反復処理します

  26. 26

    Angular2のJsonオブジェクトを反復処理します

  27. 27

    角度5でJSONオブジェクトの応答を反復します

  28. 28

    jsonと構築pythonオブジェクトを反復処理します

  29. 29

    JSONオブジェクトを適切に反復する方法は?

ホットタグ

アーカイブ