🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
JSON

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

JavaScript

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

Q&A

解決済

2回答

10079閲覧

JSONファイルの第二階層を取得したい

A111

総合スコア13

JSON

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

JavaScript

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

0グッド

1クリップ

投稿2020/11/22 06:51

編集2020/11/22 06:59

実現したいこと

JSONの第二階層内にあるValueをKeyから取得したいです。
今回は第二階層には必ずorangeという名前がついたKeyがあるため、そのKeyに対応するValueを取得することを実現したいです。

該当するJSONファイル

json

1{ 2 "name": "test-json", 3 "something": { 4 "a": { 5 "orange": "car", 6 "apple" : "train" 7 }, 8 "b": { 9 "orange" : "airplane", 10 "apple" : "walk" 11 } 12 } 13}

試したこと

第二階層にアクセスするには第一階層を踏んでから取得する必要があると分かったため、
something直下の属性を全て取得し、for文で上から順番に属性を定義し、そこからKey(Orange)を取得し、そこからKey(Orange)に対応するValue(car, airplane)を取得ようとしたのですがfor文ないで定義している第一階層の名前の呼び出しが無効になってしまいます

js

1const jsonObject = JSON.parse(fs.readFileSync('test.json', 'utf8')); 2 3const a = JSON.stringify(jsonObject.something); 4const b = JSON.parse(a); 5const c = Object.keys(b); 6console.log(c) // 問題なく表示された 7 8for (let i = 0; i < c.length; i++) { 9 var koko = c[i]; 10 var doko = JSON.stringify(jsonObject.koko); // 定義しているkokoが呼び出せない 11 var soko = JSON.parse(doko); 12 var sore = Object.keys(soko) 13 console.log(sore) 14}

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

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

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

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

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

guest

回答2

0

JavaScript

1 var doko = JSON.stringify(jsonObject.something[koko]);

では?

投稿2020/11/22 10:54

otn

総合スコア85893

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

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

A111

2020/11/22 13:42

ご回答いただきありがとうございます 大変参考になるアドバイスをいただき感謝しております!
guest

0

ベストアンサー

javascript

1var data={ 2 "name": "test-json", 3 "something": { 4 "a": { 5 "orange": "car", 6 "apple" : "train" 7 }, 8 "b": { 9 "orange" : "airplane", 10 "apple" : "walk", 11 "test" : { 12 "c": { 13 "d": [ 14 {"orange" : "ship"}, 15 {"orange" : "walk"}, 16 ] 17 } 18 } 19 } 20 } 21}; 22const getOrange=data=>{ 23 var ret=[]; 24 Object.entries(data).forEach(x=>{ 25 if(x[0]=="orange"){ 26 ret.push(x[1]); 27 }else if(x[1] instanceof Object){ 28 ret=ret.concat(getOrange(x[1])); 29 } 30 }); 31 return ret; 32}; 33console.log(getOrange(data)); 34

投稿2020/11/22 11:39

yambejp

総合スコア116694

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

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

A111

2020/11/22 13:42

ご回答いただきありがとうございます お教えいただいた方法で全てのValueを取得することができました ありがとうございました!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.36%

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

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

質問する

関連した質問