質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
JSON

JSON(JavaScript Object Notation)は軽量なデータ記述言語の1つである。構文はJavaScriptをベースとしていますが、JavaScriptに限定されたものではなく、様々なソフトウェアやプログラミング言語間におけるデータの受け渡しが行えるように設計されています。

PowerShell

Windows PowerShellはコマンドラインインターフェースであり、システム管理を含むWindowsタスク自動化のためのスクリプト言語です。

Q&A

解決済

2回答

5223閲覧

PowerShellのPSCustomObjectへの追記

eri0315

総合スコア23

JSON

JSON(JavaScript Object Notation)は軽量なデータ記述言語の1つである。構文はJavaScriptをベースとしていますが、JavaScriptに限定されたものではなく、様々なソフトウェアやプログラミング言語間におけるデータの受け渡しが行えるように設計されています。

PowerShell

Windows PowerShellはコマンドラインインターフェースであり、システム管理を含むWindowsタスク自動化のためのスクリプト言語です。

0グッド

0クリップ

投稿2019/11/13 14:17

前提・実現したいこと

PowerShellのPSCustomObjectでjsonファイルをConvertFrom-Jsonで読み込み、
値を追加して、以下のような形で出力したいのですが、
どのようなコマンドを実行すれば良いかわかりません。

InputJson

1{ 2 "hoge1": { 3 "hoge2": [ 4 { 5 "hoge3": [ 6 7 ] 8 } 9 ] 10 } 11

OutputJson

1{ 2 "hoge1": { 3 "hoge2": [ 4 { 5 "hoge3": [ 6 {"foo1": { 7 "foo2":"XXXX", 8 "foo3":"XXXX", 9 } 10 } 11 ] 12 } 13 ] 14 }

試したこと

foo2、foo3の「key:value」については、以下のコマンドで実施できました。
$d = New-Object 'system.collections.generic.dictionary[string,string]'
$d.Add("foo2","XXXX")
$d.Add("foo3","XXXX")
$PSCustomObject.hoge1.hoge2.hoge3 += $d
しかし、foo1(jsonで言うところのオブジェクト)の部分が追加方法がわかりません。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

オブジェクトはハッシュで表現します。ハッシュは @{プロパティ1=値1; プロパティ2=値2} のように作ります。
配列は @(要素1, 要素2, 要素3) のように作ります。
ConvertTo-Json は浅い階層しか変換しないので、-Depth オプションで使用したい階層の深さを指定してください。

ps1

1$a = ConvertFrom-Json -InputObject @" 2{ 3 "hoge1": { 4 "hoge2": [ 5 { 6 "hoge3": [ 7 8 ] 9 } 10 ] 11 } 12} 13"@ 14$a.hoge1.hoge2[0].hoge3 = @(@{foo1=@{foo2="XXX";foo3="XXX"}}) 15ConvertTo-Json -InputObject $a -Depth 100

投稿2019/11/14 00:04

編集2019/11/14 00:08
Zuishin

総合スコア28660

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

ベストアンサー

次のようにfoo1プロパティをもつオブジェクトを追加します。そのfoo1プロパティにfoo2,foo3プロパティをもつオブジェクトが入っています。

PowerShell

1$json = @" 2{ 3 "hoge1": { 4 "hoge2": [ 5 { 6 "hoge3": [ 7 8 ] 9 } 10 ] 11 } 12} 13"@ 14 15$data = $json | ConvertFrom-Json 16 17$data.hoge1.hoge2[0].hoge3 += [pscustomobject]@{ 18 foo1 = [pscustomobject]@{ 19 foo2 = "XXX" 20 foo3 = "XXX" 21 } 22} 23$data | ConvertTo-Json -Depth 10 24

ちなみに追加するデータもjsonから作ることもできます。

PowerShell

1$new = @" 2{ 3 "foo1": { 4 "foo2":"XXXX", 5 "foo3":"XXXX" 6 } 7} 8"@ 9 10$data.hoge1.hoge2[0].hoge3 += $new | ConvertFrom-Json

投稿2019/11/14 00:01

mitarai

総合スコア223

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問