Java中的解析可在Java中访问
我有 来自org.json库 在纳肖恩,我希望能够做到Java中的解析可在Java中访问,java,nashorn,Java,Nashorn,我有 来自org.json库 在纳肖恩,我希望能够做到 public JSONObject parseXML(String xml) { JSONObject jsonObject = XML.toJSONObject(xml); return jsonObject; } 我最终得到的是NPE。但如果我这样做了 let foo = parseXML(someXMLString); console.log(foo.someProperty); 它起作用了。是否有一个与JSON.
public JSONObject parseXML(String xml) {
JSONObject jsonObject = XML.toJSONObject(xml);
return jsonObject;
}
我最终得到的是NPE。但如果我这样做了
let foo = parseXML(someXMLString);
console.log(foo.someProperty);
它起作用了。是否有一个与JSON.parse等效的函数,我可以在JavaLand中执行并返回,而不需要JavaScript中的JSON.parse
编辑:请注意它不是重复的。我不是在问如何解析JSON中的某些值,我是在问如何返回整个对象,以便Nashorn在不使用额外JSON的情况下解析它。parse您可以从Java调用JSON.parse或任何其他脚本函数。从Java调用JSON.parse的示例代码:
let foo = parseXML(someXMLString);
console.log(JSON.parse(foo.someProperty));
public static JSONObject parseXML(String xml)
和YourClass.parseXML可能重复。很抱歉,为了简洁起见,我省略了它。我有映射到此类的绑定设置。正在调用该方法并返回此对象。我只需要对返回的对象调用一个JSON.parse。我希望能够忽略这一点。
import javax.script.ScriptEngine;
import javax.script.ScriptEngineManager;
import jdk.nashorn.api.scripting.JSObject;
public class Main {
public static void main(String[] args) throws Exception {
ScriptEngineManager m = new ScriptEngineManager();
ScriptEngine e = m.getEngineByName("nashorn");
// get ECMAScript JSON.parse
JSObject jsonParse = (JSObject)e.eval("JSON.parse");
// initialize/retrieve JSON string here
String str = "{ \"foo\": 42, \"bar\": { \"x\": \"hello\" } }";
// call JSON.parse from Java
Object parsed = jsonParse.call(null, str);
// expose parsed object to script
e.put("obj", parsed);
// access parsed object from script
e.eval("print(obj.foo)");
e.eval("print(obj.bar.x)");
}
}