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

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

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

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

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

Q&A

解決済

2回答

556閲覧

【JavaScript】Jsonの値を操作する

west_side_park

総合スコア45

JSON

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

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

0グッド

0クリップ

投稿2021/04/15 06:16

編集2021/04/15 06:22

##やりたいこと
以下のようなjsonファイル(かなり簡略化しています)で、特定のキーを変更したいです。
変更する箇所は2点あります。
①"color"をキーごと消したい
②"level"が2のものを3、3のものを6にする

json

1[ 2 { 3 "sample_id": "A", 4 "test_id": "test#1", 5 "created_by": "テスト太郎", 6 "patterns": [ 7 { 8 "pattern_id": "1000", 9 "plans": [ 10 { 11 "name": "ドラえもん", 12 "color": 1, → 削除 13 "level": 2 → 3に変更 14 }, 15 { 16 "name": "ドラえもんver2", 17 "color": 5, → 削除 18 "level": 5 → 変更なし 19 } 20 ] 21 } 22 ], 23 "title": "ドラえもんは猫型ロボットである" 24 }, 25 { 26 "sample_id": "B", 27 "test_id": "test2", 28 "created_by": "テスト太郎", 29 "patterns": [ 30 { 31 "pattern_id": "1000", 32 "plans": [ 33 { 34 "name": "ドラミちゃん", 35 "color": 1, → 削除 36 "level": 3 → 6に変更 37 }, 38 { 39 "name": "ドラミちゃんver2", 40 "color": 3, → 削除 41 "level": 3 → 6に変更 42 } 43 ] 44 } 45 ], 46 "title": "ドラミちゃんも猫型ロボットである" 47 },

試したこと

まずpatternsを取得してみました。

js

1const jsonData = JSON.parse(json); 2if (Array.isArray(jsonData)) { 3 jsonData.forEach(d => { 4 var target = d.patterns; 5 console.log(target);

取得結果

[ { pattern_id: 'A', plans: [Object],] [ { pattern_id: 'B', plans: [Object],]

ここから、plansの中のcolorとlevelを変更する方法が分かりませんでした。
var target = d.patterns.plans とするとundefinedとなりますし、どのようにすれば操作できるようになるでしょうか。
ご教授お願い致します。

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

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

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

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

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

guest

回答2

0

複雑に見えるタスクを分解するのがプログラミングの重要要素です。

  • 変数 plan に、name, color, level プロパティがあるオブジェクトが入っているとしたら、何をすべきか?

js

1delete plan.color; 2if (plan.level == 2) 3 plan.level = 3; 4else if (plan.level == 3) 5 plan.level = 6;
  • 変数 pattern に、pattern_id, plans プロパティがあるオブジェクトがはいっているとしたら、上記 plan を得て処理するにはどうすればいいか?

js

1pattern.plans.forEach(plan => { ... });
  • 変数 sample に、sample_id, test_id, created_by, patterns などのプロパティがあるオブジェクトが入っているとしたら、上記 pattern を得て処理するにはどうすればいいか?

js

1sample.patterns.forEach(pattern => { ... }});
  • JSON から上記 sample を得て処理するにはどうすればいいか?

js

1JSON.parse(json).forEach(sample => { ...});

これらを組み合わせれば良さそうです。

投稿2021/04/15 06:37

int32_t

総合スコア21695

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

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

west_side_park

2021/04/16 06:40

丁寧なご回答ありがとうございます! 別の回答者様のアンサーと、int32_t様の回答を照らし合わせて無事解決することができました。 複雑に見えていましたが、一つ一つ読み解いていくことで理解が深まりました!
guest

0

ベストアンサー

javascript

1delete(json[0].patterns[0].plans[0].color); 2json[0].patterns[0].plans[0].level=3; 3delete(json[0].patterns[0].plans[1].color);

投稿2021/04/15 06:24

yambejp

総合スコア116724

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問