JSONをテキストでごりごり書くのが面倒になってきたので、
直接変換するコードを書いた。
function CJsonWriter(){ } CJsonWriter.prototype= { _crlf_enable:true, SetCrlfEnabled:function(i_flag){ this._crlf_enable=i_flag; }, //i_objectをi_nameという名前のJSON文字列へ変換する ToJsonString:function(i_object,i_name) { var rt=this._crlf_enable?'\r\n':''; return i_name+':'+this._Value2Json(i_object); }, _Object2Json:function(i_obj,is_array) { var result=''; var is_first=true; for(var i in i_obj){ if(!is_first){ result+=','; } if(!is_array){ result+='"'+i+'":'; } result+=this._Value2Json(i_obj[i]); is_first=false; } return result; }, _Value2Json:function(i_obj) { var rt =this._crlf_enable?'\r\n':''; switch(typeof i_obj) { case 'number': case 'boolean': return i_obj+rt; case 'string': return '"'+i_obj.split('"').join('\\"')+'"'+rt; case 'object': if(i_obj==null){ return 'null'+rt; }else if(i_obj instanceof Array){ return '['+rt+this._Object2Json(i_obj,true)+']'+rt; }else{ return '{'+rt+this._Object2Json(i_obj,false)+'}'+rt; } default: throw "JsonConvert failed!"; } } }
使い方
var test={ a:false, b:100, d:{ r:[0,1,false], f:'"""""""""""""""""' }, e:null, f:[1,2,3,['a','b','c'],{at:1,at2:2}] } var t=new CJsonWriter(); t.SetCrlfEnabled(true); alert(t.ToJsonString(test,"test"));