eval函数的缺陷

1、今天在维护产品目录的时候,发现了个奇葩的事情,eval函数转换出错,查验之后发现字符串中如果加入了换行符就会导致该问题。

2、测试程序

info.file

[{productDirIds:'1',productDirName:'PC服务器'},{attributes:‘hello

nice'}]

public static void main(String[] args) throws FileNotFoundException {
        Scanner sc = new Scanner(new File(info.file"));
        StringBuffer sb = new StringBuffer();
        sb.append("var json =eval(");
        while(sc.hasNextLine()){
            sb.append(sc.nextLine());
            sb.append("\n");//注意,注释掉此处可以正常执行,但是如果加入此句话会导致出错;而在ie下,F12控制台是看不到报错的。
        }
        sb.append(");");
        sc.close();
        System.out.println(sb.toString());
        sb.append("json[1].attributes");
        ScriptEngineManager manager = new ScriptEngineManager();
        ScriptEngine engine = manager.getEngineByName("javascript");
        try{  
            String dynamicValue = engine.eval(sb.toString()).toString();
            System.out.println(dynamicValue);
        }catch(ScriptException e){
            e.printStackTrace();
        }
    }

上一篇:P3966 [TJOI2013]单词


下一篇:asp.net 动态添加自定义控件