タブが深くなるので、
簡易的にJSONか評価する関数を作った。
ColdFusion ってやつだと、そういう関数があるみたいだけど、
Javascript ではないっぽい?
jQuery でもないっぽい?
まぁ、大して難しいものでもないので、良ければ使ってください。
var isJson = function(arg){
arg = (typeof(arg) == "function") ? arg() : arg;
if(typeof(arg) != "string"){return false;}
try{arg = (!JSON) ? eval("(" + arg + ")") : JSON.parse(arg);return true;}catch(e){return false;}
}
alert(isJson(1)); // false
alert(isJson({data:"hoge"})); // false
alert(isJson('{"data":"hoge"}')); // true
alert(isJson("{'data':'hoge'}")); // false
alert(isJson(function(){return '{"data":"hoge"}';})); // true
ちゃんと、
'{"data":"hoge"}'
と
"{'data':'hoge'}"
を区別して評価してくれて良かった。
つか、JSON.parse() が出来るかどうかって、
(!JSON) で判別していいのかしら?
eval() は、昔どっかのブログでグローバルをなんちゃらとか書いてあった気がしたので、
できるだけ、JSON.parse() 使えたら使えるようにしたいんだけどもねぇ。
でも、JSON.parse() より eval() のほうが速いよ!っていうのも見た気がした。
Chrome16 と Firefox3.6.x で動作確認済みですー。
GJ!
返信削除マジ?!
返信削除