Files
kaka111222333-kaka111222333…/_posts/2015-02-22-javajs.md
2019-11-17 01:12:14 +08:00

1.1 KiB
Raw Blame History

layout, title, tags, categories, published
layout title tags categories published
post Java中用js解析json ScriptEngineManager Java javascript java java

在java中如何解析jsonfastjsonjackson那未免太无趣了

其实我们可以试试ScriptEngine

public class NashornTest {

    private static String json = "[{name:'A',age:'18'},{name:'B',age:'19'},{name:'C',age:'30'}]";

    private static String script =
            "function parse(json){" +
            "   var names = new Array();" +
            "   for(var i in json){" +
            "       names.push(json[i].name);" +
            "   }" +
            "   return names;" +
            "};" +
            "parse(" + json + ");";

    public static void main(String[] args) throws ScriptException {
        ScriptEngineManager manager = new ScriptEngineManager();
        ScriptEngine engine = manager.getEngineByName( "JavaScript" );

        Map<String,String> result = (Map<String,String>)engine.eval(script);
        result.forEach((k,v) -> System.out.println(v));
    }
}

输出:

A

B

C

代码中使用了 [lambda](http://blog.rainynight.top/2014-12-13/java-newfeature/# lambda)