- ベストアンサー
復数の配列をJson形式にまとめる方法
- JavaScriptを使用して、カンマ区切りのデータを配列に変換し、JSON形式にまとめる方法をご紹介します。
- jQueryを利用することで、より簡潔に配列をJSON形式に変換することができます。
- 要素ごとにループを回してJSON形式にまとめることで、効率的に配列を結合することができます。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
愚直にやるなら var msdata = (function(){ var temp = [ms.split(/,/), pilot.split(/,/), cost.split(/,/)]; var o = {}, n = temp[0].length; for (var i = 0; i < n; i++) { var m = temp[0][i].trim(); var p = temp[1][i].trim(); var c = temp[2][i].trim(); o[m] = { pilot:p, cost:c }; } return o; })(); 本格的にやるなら、以下のようなライブラリを利用することになります。 https://www.google.co.jp/search?q=csonv.js
その他の回答 (2)
- pringlez
- ベストアンサー率36% (598/1630)
あ、配列をJSON形式にする方法のベストですか。なるほど質問を誤認していました。…が、それは最初の一回しか行わない処理ですし、ベストとか考える必要は無く普通にループで格納するだけでいいと思いますよ。
補足
お付き合いありがとうございます! 意図も理解いただき感謝です。 > 普通にループで格納するだけ というのは、今回の例で言えば具体的にはどんな記述でしょうか。 調べ方が下手で情けないのですが、 既にJson形式になったものからの説明が多くて、詰まっております。 参考になるページでも構いませんので、ご教授いただけますと大変ありがたいです。
- pringlez
- ベストアンサー率36% (598/1630)
そもそも本来はデータというのは、どのように使うかによって表現方法を変えるべきです。しかしこの質問ではどのように使うか説明がないので、ベストな方法はこの状況では誰にも分からないと思いますよ。 ただいまの情報の中で私が使用する方法を想像して補った上で、データ構造を考えるとすれば以下のようにします。 var msdata = { ガンダム : {"pilot":"アムロ", "cost":"100"}, ガンキャノン : {"pilot":"カイ", "cost":"70"} }; 配列にしてしまうとデータの特定・取り出しに、以下のような原始的で回りくどい方法をとらねばなりませんが、 for (var i = 0; i < testdata.length; i++) { if (testdata[i].ms == "ガンダム") { alert(testdata[i].pilot); break; } } 上記のデータ構造なら、以下のようにシンプル・スマート・高速にデータを取り出すことができます。 alert(msdata["ガンダム"].pilot);
補足
アドバイスありがとうございます! そして説明不足で本当に申し訳ありません。 経緯としては、 カンマ区切りのデータが復数あって、それらをいろいろと扱う際に いったんJson形式で取りまとめておけば、使い回す際にラクな状況でして、 その為のよりよい手法をお尋ねした次第です。 伺いたいのは、上記の配列(3個)から ご提示いただいたような var msdata = { ガンダム : {"pilot":"アムロ", "cost":"100"}, ガンキャノン : {"pilot":"カイ", "cost":"70"} }; この形を作るための方法です。 Json形式にすれば取り出す方法もわかるのですが、 その前段階にあたる「Json形式にする方法」で悩み中です。 msdataに ガンダム : {"pilot":"アムロ", "cost":"100"}, ガンキャノン : {"pilot":"カイ", "cost":"70"} が入っている状態を作る為の方法を知りたいです。
お礼
ありがとうございます! 3つの変数を配列化して、tempに格納。 オブジェクト、oを定義。 変数msの数を取得。 その数分ループして、都度m、p、cの変数に格納し、 最後にオブジェクトoにまとめる。 という感じだと思うのですが、 とてもこれを書くスキルは自分にはありませんでした。 あらためて解析して、把握します。 この度は終始ご丁寧な対応を賜り、本当にありがとうございました。 大変為になりました。