前提・実現したいこと
①文字列の値からjson.parse()で文字列をJSONとして解析をする。
②JSONのキーと値を取得して、キーと値の表を作成したい。
例えば、以下のようなデータが来たら以下のような表を作成したいです。
{"test1":"aaa","test2":{"first_name":"tarou","last_name":"hanako"},"test3":{"email":"test@test.com","prefecture":"東京都"},"test4":"bbb"}
上記は1例ですが、キーが入れ子になっているケースや、入れ子の入れ子のケースも
考慮が必要です。
上記のデータでの表作成イメージ
項目 | 値 |
---|---|
test | aaa |
first_name | tarou |
last_name | hanako |
test@test.com | |
prefecture | 東京都 |
test4 | bbb |
入れ子があるケースでは、どのようにキーと値を取り出せるのでしょうか。
現在色々と調べていますが、何か例を教えて頂けないでしょうか。
該当のソースコード
現状は入れ子が全くないパターンのデータを作成し以下のソースで、
特定のフィールドにキーと値が入った表を表示することは出来ています。
JavaScript
1 // dataは上記のサンプルデータのような文字列の値 2 // コメントはプログラム自体経験が浅いので間違っているかもしれないです。 3 4 // json解析 5 var obj = JSON.parse(data); 6 console.log(obj); 7 8 // jsonの要素数の取得 9 var json_count = Object.keys(obj).length; 10 console.log(json_count); 11 12 // objの配列の取得 13 var obj_key = Object.keys(obj); 14 var obj_values = Object.values(obj); 15 console.log(obj_key); 16 console.log(obj_values); 17 18 // 配列かどうかを調べる 19 console.log(Array.isArray(obj_key)); //true 20 console.log(Array.isArray(obj_key)); //true 21 22 // objのキーと値を格納するための空配列を定義 23 var key_box =[]; 24 var value_box =[]; 25 26 // HTMLの<tr>~</tr>のタグの文字列を作成(表の中身の部分の作成) 27 var cuntom = ""; 28 29 for (var i=0 ; i < json_count ; i++){ 30 key_box[i] = obj_key[i]; 31 value_box[i] = obj_values[i]; 32 cuntom = cuntom + "<tr><td>" +key_box[i]+ "</td><td>" +value_box[i]+ "</td></tr>"; 33 } 34 35 // 表作成 36 // 固定の部分(tableタグ、ヘッダ) 37 38 var before = "<table border=1>" + 39 "<tr><th>項目</th><th>値</th></tr>"; 40 var after = "</table>"; 41 42 //最後にbefore、after、customを足し合わせてHTMLの<table>~</table>を 43 //文字列としてフィールドの要素.innerHTMLに代入して、特定のフィールドに表示 44 45 フィールドの要素.innerHTML = before + custom + after; 46

回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2018/05/10 07:27
2018/05/10 07:37
2018/05/10 07:41
2018/05/10 07:53
2018/05/10 08:14
2018/05/10 09:25
2018/05/11 01:05