• 締切済み

javascriptでJSONデータの生成方法

現在PerlのフレームワークであるMojoliciousとJavascriptのjQueryを使ってAjaxを利用したアプリケーションを作ろうとしているのですが、クライアント側で、サーバに送信するためのJSON形式のデータがうまく作れません。 例えば、ブラウザ上の表のセルをダブルクリックしたときにそのデータを書き換えられるようにし、その更新データをJSONでサーバ側に送りたいのですが、 <table> <tr><th>name</th><th>email</th></tr> <tr><td class="name">山田</td><td class="email">yamada**@gmail.com</td></tr> </table> とある表のセルの山田のアドレスをyamada**@gmail.com -> yamada**@yahoo.co.jpと変更した場合、javascript(jQuery)で次のようなJSONデータを作りたいです。 { "email" : "yamada**@yahoo.co.jp"} 左側のemailは動的にセルのclass属性から取得したいのですが、方法が分かりません。 実際にはemail以外にも多数の列がありますので、なるべく動的にclass属性を取得したいのですが、良いJSONの生成方法やJSONを用いた他のデータ構造があれば教えていただきたいです。

みんなの回答

回答No.4

>ANo.3 すみません、ダブルクォーテーションとシングルクォーテーションの対応が間違ってますが、 適宜調整して下さい。

回答No.3

JavaScriptオブジェクトをJSON形式でダンプするライブラリとか、 (No.1、No.2で紹介されているのもこのタイプだと思います) XMLデータを{タグ名:ノードバリュー}に対応させたJavaScriptオブジェクトに変換するライブラリは多いですが、 それ以前の処理、 つまりclassなどからオブジェクトを生成したり、JSONに変換するという独自ルールを使うなら、 自分でオブジェクトに変換したり、JSONで出力しないとダメなのでは? ----------- var property='email'; var json='{"'+ property + '": "' + document.getElementsByClassName(property)[0] + '"}'; alert(json); ----------- var property='email'; var object={}; object[property]=document.getElementsByClassName(property)[0]; /*** objectをjsonにダンプするライブラリを使用して下さい ***/ var dump=ライブラリ関数(object); alert(dump); ------------ なお、classは複数存在させることが可能ですので、 <td class="email">・・・</td> <td class="email">・・・</td> となっている場合でも、1つめのemailしか取得できないようにしています。 もし全部を取得するのであれば、 配列にするなど、何らかの処理を施す必要がありますが、 HTMLドキュメントのフォーマットなどに合わせて調整してみてください。

  • think49
  • ベストアンサー率59% (285/482)
回答No.2

JSON.stringify は ES5 で標準化されたので最近のブラウザなら使用可能です。 http://es5.github.com/#x15.12.3 未対応ブラウザには json2.js を適用すれば対応できます。 http://json.org/js.html 他の手段としては CSV に変換しても良さそうです。 http://codezine.jp/article/detail/2364 http://www.ietf.org/rfc/rfc4180.txt "name","email" "山田","yamada**@gmail.com" "佐藤","satou**@gmail.com"

  • yyr446
  • ベストアンサー率65% (870/1330)
回答No.1

IEのJscriptでサポートしてるかどうか調べてませんが、 javascript1.7から  var str = JSON.stringify(value[, replacer [, space]]); というメソッドがあります。使えそうですね (参考) https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/JSON/stringify というより、やっぱりサーバー側でJSONデータに組み立てたほうがよいかな。 ※GETやPOSTで送れるのは文字列です。マルチパートでバイナリーファイルも送れますが...

関連するQ&A

専門家に質問してみよう