javascript(jquery)に関する質問です。

文字列を配列や連想配列に変換する方法があったら教えてください。
クラスブラウザな形式、あるいはjQueryで実装できることが望ましいです。
以下を参考にしてください。

strTest = '{"tokens": ["hoge", "foo", "bar"]}'
上記のstrTestのような文字列を配列や連想配列に変換する関数defがあるとすると、
dicTest = def(strTest)
としたとき、
dicTest[token]が配列["hoge", "foo", "bar"]を表し、
dicTest[token][0]が文字列"hoge"を表すようになる形が理想的です。
連想配列で直接二次元配列が作れないことは把握しています(http://nakawake.net/?p=831)。
当方初級レベルです。よろしくお願い致します。

回答の条件
  • 1人2回まで
  • 登録:
  • 終了:2011/01/27 23:33:34
※ 有料アンケート・ポイント付き質問機能は2023年2月28日に終了しました。

ベストアンサー

id:hagino_3000 No.2

回答回数6ベストアンサー獲得回数4

ポイント30pt

クロスブラウザってのがどこまでを指すのかわからないけど大抵のブラウザは

>var str  = '{"tokens": ["hoge", "foo", "bar"]}';
>var obj = JSON.parse(str);
>obj.tokens
hoge,foo,bar
>obj.tokens[0]
hoge

となる。

IE6,7といったネイティブでJSONが実装されていないブラウザもサポートするならjson2.jsを使う

id:puriketu99

回答ありがとうございます。

json2、以前もはぎーさんに教えてもらったような記憶がほんのりあります。

帰ったら試してみます。

2011/01/27 07:48:18

その他の回答2件)

id:noy_shimotsuki No.1

回答回数2ベストアンサー獲得回数0

ポイント25pt

その例ならJSON形式と同じなのでjQuery.parseJSON(strTest)でいいのでは?

まあこれだと文字列の値やtokensが""(''は駄目)で囲まれてないとエラーになりますが。

id:puriketu99

回答ありがとうございます。

エラーの件ですが、実際に扱いたい文字列は、simplejsonでdumpされているものなので大丈夫でした。帰ったら試してみます。

2011/01/27 07:45:01
id:hagino_3000 No.2

回答回数6ベストアンサー獲得回数4ここでベストアンサー

ポイント30pt

クロスブラウザってのがどこまでを指すのかわからないけど大抵のブラウザは

>var str  = '{"tokens": ["hoge", "foo", "bar"]}';
>var obj = JSON.parse(str);
>obj.tokens
hoge,foo,bar
>obj.tokens[0]
hoge

となる。

IE6,7といったネイティブでJSONが実装されていないブラウザもサポートするならjson2.jsを使う

id:puriketu99

回答ありがとうございます。

json2、以前もはぎーさんに教えてもらったような記憶がほんのりあります。

帰ったら試してみます。

2011/01/27 07:48:18
id:Cherenkov No.3

回答回数1504ベストアンサー獲得回数493

ポイント25pt
function def(str) {
  return JSON.parse ? JSON.parse(str) : jQuery.parseJSON(str); //jQuery1.4.1以上
}

var strTest = '{"tokens": ["hoge", "foo", "bar"]}';
var dicTest = def(strTest);

var token = "tokens";
console.log(dicTest[token]); //["hoge", "foo", "bar"]
console.log(dicTest[token][0]); //hoge
id:puriketu99

回答ありがとうございます。

帰ったら試してみます。

2011/01/27 07:49:13

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

回答リクエストを送信したユーザーはいません