您的位置:首页 > 编程语言 > Java开发

java 嵌入js线程异步调用和验证字符串是否json格式

2016-08-24 14:55 351 查看
/**

     * java嵌入js验证字符串是否json格式

     * 注:如果是json的话eval中要加"("和")"花括号,否则不能识别json出现异常

     * 异常:javax.script.ScriptException: sun.org.mozilla.javascript.internal.EvaluatorException: missing ; before statement (<Unknown source>#1) in <Unknown source> at line number 1

     * @param jsonStr

     * @return

     */

    public static boolean isJson(String jsonStr){

        boolean isFalg = true;

        try{

        Object object = (Object)new ScriptEngineManager().getEngineByName("js").eval("("+jsonStr+")");

        System.out.println(GsonUtil.transObjectToJson(object));

        }catch (ScriptException e){

        isFalg = false;

            System.out.println ("json格式有误");

            e.printStackTrace();

        }

        return isFalg;

    }

    

    /**

     * java嵌入js使用线程异步调用

     * 注意:print打印时要带双引号转义,否则会出现异常

     * 异常:javax.script.ScriptException: sun.org.mozilla.javascript.internal.EcmaError: ReferenceError: "异步调用" is not defined.

     */

    public static void jsRunnable(){

    ScriptEngineManager sem = new ScriptEngineManager();

    ScriptEngine se = sem.getEngineByName("js");

    try {
se.eval("function run(){print(\"异步调用\");}");
Invocable invokeEngine = (Invocable)se;
Runnable runner = invokeEngine.getInterface(Runnable.class);
Thread t = new Thread(runner);
t.start();
t.join();
} catch (Exception e) {
e.printStackTrace();
}

    }

    

    /**

     * 测试用例

     * @param args

     */
public static void main(String[] args) {
// java嵌入js验证字符串是否json格式
String s = "{\"name\":\"1\"}";
System.out.println(isJson(s));

// java嵌入js使用线程异步调用
jsRunnable();
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  java 线程 json javascript