假設預置了:json = "{\"name\": \"jack\", \"age\": 24}"
塔插,在java中使用nashorn引擎執(zhí)行以下代碼塊:
var obj = JSON.parse(json);
print(obj.name);
for (var key in obj) {
print(key + ":" + obj[key]);
}
具體java代碼為:
public static void main(String[] args) throws Exception{
ScriptEngineManager scriptEngineManager = new ScriptEngineManager();
ScriptEngine scriptEngine = scriptEngineManager.getEngineByName("nashorn");
String json = "{\"name\": \"jack\", \"age\": 24}";
scriptEngine.put("json", json);
String js01 = "var obj = JSON.parse(json);print(obj.name);for(var key in obj) {print(key + \":\" + obj[key]);}";
scriptEngine.eval(js01);
}
結果一切正常:
但是如果這個預置的json字符串是在一個java對象中時,會報bug:
假設我們有一個request對象,這個對象有一個json字段,而這個json字段的值為"{\"name\": \"jack\", \"age\": 24}"
,然后執(zhí)行以下javascript代碼:
request.json = JSON.parse(request.json);
print(request.json);
for (var key in request.json) {
print(key + ":" + request.json[key]);
}
具體執(zhí)行的java代碼為:
public static void main(String[] args) throws Exception{
ScriptEngineManager scriptEngineManager = new ScriptEngineManager();
ScriptEngine scriptEngine = scriptEngineManager.getEngineByName("nashorn");
String json = "{\"name\": \"jack\", \"age\": 24}";
Request request = new Request();
request.setJson(json);
scriptEngine.put("request", request);
String js01 = "request.json = JSON.parse(request.json);print(request.json);for(var key in request.json) {print(key + \":\" + request.json[key]);}";
scriptEngine.eval(js01);
}
結果異常:
解決辦法:暫未找到解決方法