お世話になります。
あるjsonファイルの多次元配列をjavascriptやjqueryなどでテーブルの用な感じで表示、検索したいのですがなにかいい方法はありますでしょうか?
色々と探しているのですがうまく動くものがなく困っています。
多次元配列の階層が8層ぐらいあるのでどうしたら良いのでしょうか?
宜しくお願い致します。
気になる質問をクリップする
クリップした質問は、後からいつでもMYページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
回答3件
0
munyaXさんの回答を見て、イメージされているのはこんな感じのものなのかな、と思いました。
lang
1var json = [ 2{"年":"1992", "国":"スペイン(Spain)", "都市":"バルセロナ(Barcelona)"}, 3{"年":"1996", "国":"アメリカ合衆国(United States)", "都市":"アトランタ(Atlanta)"}, 4{"年":"2000", "国":"オーストラリア( Australia)", "都市":"シドニー(Sydney)"}, 5{"年":"2004", "国":"ギリシャ(Greece)", "都市":"アテネ(Athens)"}, 6{"年":"2008", "国":"中国(China)", "都市":"北京(Beijing)"}, 7{"年":"2012", "国":"イギリス(United Kingdom)", "都市":"ロンドン(London)"}, 8{"年":"2016", "国":"ブラジル(Brazil)", "都市":"リオデジャネイロ(Rio de Janeiro)"}, 9{"年":"2020", "国":"日本(Japan)", "都市":"東京(Tokyo)"} 10]; 11 12 13document.body.appendChild( 14 (function(k, table){ 15 16 table.appendChild(k.reduce(function(pV, cV, i, self){ 17 return pV.appendChild( 18 document.createElement('th').appendChild( 19 document.createTextNode(cV) 20 ).parentNode 21 ).parentNode; 22 }, document.createElement('tr'))); 23 24 json.forEach(function(v, i, self){ 25 table.appendChild(k.reduce(function(pV, cV, i, self){ 26 return pV.appendChild( 27 document.createElement('td').appendChild( 28 document.createTextNode(v[cV]) 29 ).parentNode 30 ).parentNode; 31 }, document.createElement('tr'))); 32 }) 33 34 return table; 35 })( 36 json.reduce(function(pV, cV, i, self){ 37 return pV.concat( Object.keys( cV ) ) 38 },[]) 39 .filter(function (v, i, self) { 40 return self.indexOf(v) === i; 41 }), 42 document.createElement('table') 43 ) 44);
ただ、これが「8層」あるとなると、8次元空間にしか展開できないと思いますので、見やすく表示するというのは無理かなあ、と。
投稿2015/02/11 03:19
総合スコア36087
0
jsdo.it で こんなサンプルをみつけました。
- JSONを可視化するやーつ http://jsdo.it/shirayuki/eqpd
jquery のプラグインも見つけました。
...
このプラグインを使えば、script内に記述したJSONデータや外部JSONファイルからHTMLのテーブルを作成することができます。
しかも!作成したテーブルにはソート、検索、ページャーの機能が付いており、至れり尽くせりのプラグインです。
...
投稿2015/02/10 12:56
総合スコア22324
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
0
ベストアンサー
例えば以下のようなJSONがあったら
lang
1var json = { 2 [1, 2, ['a', 'b', 'c']] 3};
以下のようなHTMLを吐く感じでしょうか?
lang
1<table> 2<tr> 3 <td>1</td> 4 <td>2</td> 5 <td> 6 <table> 7 <tr> 8 <td>a</td> 9 <td>b</td> 10 <td>c</td> 11 </tr> 12 </table> 13 </td> 14</tr> 15</table>
この理解で正しい場合、確かにjQueryのプラグインでは見かけたことないですね。
(私も知らないだけで探せばあるのかもしれませんが)
ただ自分で書いてもそこまで難しいコードにはならないと思いますよ。
以下、擬似コードですが、
lang
1 2json2table({ 3 [1, 2, ['a', 'b', 'c']] 4}); 5 6function json2table(json){ 7 "<table>"を表示 8 for(var tr in json){ 9 "<tr>"を表示 10 for(var i=0; i<tr.length; i++){ 11 "<td>"を表示 12 if( tr[i] が 配列(オブジェクト)であれば ){ 13 json2table(tr[i]); //再帰 14 } 15 else{ 16 tr[i]を表示 17 } 18 "</td>"を表示 19 } 20 "</tr>"を表示 21 } 22 "</table>"を表示 23}
な感じで再帰使ってやれば良いかなと。
投稿2015/02/09 03:20
編集2015/02/09 03:32総合スコア783
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2015/02/09 03:41
2015/02/09 03:46
2015/02/09 04:50
2015/02/09 05:04
2015/02/09 05:27
2015/02/09 11:36
2015/02/09 12:05
2015/02/10 11:44
あなたの回答
tips
太字
斜体
打ち消し線
見出し
引用テキストの挿入
コードの挿入
リンクの挿入
リストの挿入
番号リストの挿入
表の挿入
水平線の挿入
プレビュー
質問の解決につながる回答をしましょう。 サンプルコードなど、より具体的な説明があると質問者の理解の助けになります。 また、読む側のことを考えた、分かりやすい文章を心がけましょう。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2015/02/12 03:50