人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

JavaScriptの連想配列hogeをJSONデータに変換するための具体的なコードはありませんか?

●質問者: P-mako
●カテゴリ:インターネット ウェブ制作
✍キーワード:hoge JavaScript JSON コード データ
○ 状態 :終了
└ 回答数 : 2/2件

▽最新の回答へ

1 ● susie-t
●35ポイント

以下のようなことでしょうか?

<html>
<head>
<title></title>
<script language="javascript">
<!--
var hoge = {
 one : '壱',
 tow : '弐',
 three : '参',
 dquot : '"'
};
function makeJSON(hash){
 var init = true;
 var str = '{';
 for(var i in hash){
 if(!init) str += ',';
 str += '"' + i.replace('"', '\\"', 'g') + '":"';
 str += hash[i].replace('"', '\\"', 'g') + '"';
 init = false;
 }
 str += '}';
 return str;
}
alert(makeJSON(hoge));
//-->
</script>
</head>
<body>
</body>
</html>

ダミー:http://q.hatena.ne.jp/

◎質問者からの返答

サンプル作成ありがとうございます。

シンプルなソースですね。

ただ、対象の連想配列が多次元になるので、リカーブル(再帰的)な関数だとうれしいです。

(自分で改修しろっていう感じですが・・・)


2 ● talepanda
●35ポイント

JSONの公式サイトにjson.jsというオープンソースコードがあります。

<script type="text/javascript" src="json.js"></script>
<script type="text/javascript">
var myJSONObject = {"bindings": [
 {"ircEvent": "PRIVMSG", "method": "newURI", "regex": "^http://.*"},
 {"ircEvent": "PRIVMSG", "method": "deleteURI", "regex": "^delete.*"},
 {"ircEvent": "PRIVMSG", "method": "randomURI", "regex": "^random.*"}
 ]
};
document.write(myJSONObject.toJSONString());
</script>

プロトタイプが汚染されるのがいやなら、json.jsの中の必要なところだけを引数をとる関数にしてしまえばよいかと。

http://www.json.org/js.html

http://www.json.org/json.js

◎質問者からの返答

json.jsで、toJSONStringなんていうメソッドがあったんですね。

サンプルは確かに動作しましたが、以下のようなソースの場合、連想配列urlの中身が表示されず、空の{}の羅列が得られます。

{{}:{{}:{{}:{},{}:{},{}:{},{}:{}}},{}:{{}:{{}:{},{}:{},{}:{},{}:{}}},{}:{{}:{{}:{},{}:{},{}:{},{}:{},{}:{}}},{}:{{}:{{}:{},{}:{},{}:{},{}:{}}},{}:{{}:{{}:{},{}:{},{}:{}}},{}:{{}:{{}:{}}}}

◆ソース

<html>

<head>

<script type="text/javascript" src="json.js"></script>

<script type="text/javascript" src="./prototype.js"></script>

<script language="JavaScript"></p> <p>function test()</p> <p>{</p> <p>var urllist;</p> <p>var element;</p> <p>urllist = form1.urllist.value;</p> <p>url = urllist.split("\n");</p> <p>for( i = 0; i < url.length; i++ ){</p> <p>element = url[i].split("\\");</p> <p>url[i] = new Array();</p> <p>url[i]["element"] = element;</p> <p>}</p> <p>//alert(url.toJSONString());</p> <p>form1.output.value=url.toJSONString();</p> <p>}</p> <p></script>

</head>

<body>

<form name="form1">

<input type="button" onClick="test()" value="test" />

<textarea name="urllist" cols="100" rows="10"></p> <p>C:\hoge\foo\aaa.html</p> <p>C:\hoge\foo\bbb.html</p> <p>C:\hoge\foo\bar\ccc.html</p> <p>C:\hoge\hogehoge\123.html</p> <p>C:\hoge\456.html</p> <p></textarea>

<textarea name="output" cols="100" rows="10"></p> <p></textarea>

</form>

</html>

</body>

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ