我有一个调试框架的一部分,需要能够运行时间eval对象.
具体来说,如果我有这样的字符串,"{a: 1, b:2}"则需要将其评估为具有成员a和b这些值的对象.但是,如果我这样做eval("{a: 1, b:2}"),似乎将其评估为一个声明,并说出一些非法标签.
我已经黑了它,所以它评估如下:
eval("var x=" + str + "; x;");
Run Code Online (Sandbox Code Playgroud)
这似乎工作,但似乎是一个可怕的黑客.关于如何做得更好的任何建议?
(顺便说一句,我知道eval的危险,但这是实际用户不会看到的调试框架的一部分.)
当我通过Ajax将JSON字符串发布到Django时,它将其转换为无效的JSON格式.具体来说,如果我查看Firebug中的帖子数据,我发送:
info {'mid':1,'sid':27,'name':'aa','desc':'Enter info' }
Run Code Online (Sandbox Code Playgroud)
然而,当我在django请求中访问它时,我看到:
u'{\'mid\':1,\'sid\':27,\'name\':\'aa\',\'desc\':\'Enter Info\'}
Run Code Online (Sandbox Code Playgroud)
当我尝试使用json.loads解析它时,它会因无效的JSON消息而死亡.
我发帖是:
data.info = "{'mid':1,'sid':27,'name':'aa','desc':'Enter info' }";
$.ajax({url: cmdAjaxAddress,
type: "POST",
data: data,
success: function(txt) {
result = txt;
},
async: false });
Run Code Online (Sandbox Code Playgroud)
我正在阅读django中的POST,如下所示:
if request.is_ajax() and request.method == 'POST':
infoJson = request.POST['info']
info = json.loads(infoJson);
Run Code Online (Sandbox Code Playgroud)
任何帮助,将不胜感激.