gpt4 book ai didi

java - Java 中的解析可在 Java 中访问

转载 作者:行者123 更新时间:2023-12-02 13:10:09 33 4
gpt4 key购买 nike

我有

public JSONObject parseXML(String xml) {
JSONObject jsonObject = XML.toJSONObject(xml);
return jsonObject;
}

来自 org.json 库。

在 Nashorn 我希望能够做到

let foo = parseXML(someXMLString);
console.log(foo.someProperty);

我最终得到的是 NPE。但如果我这样做

let foo = parseXML(someXMLString);
console.log(JSON.parse(foo.someProperty));

它有效。是否有与 JSON.parse 等效的函数,我可以在 Java 中执行并返回,而无需在 JavaScript 中使用 JSON.parse?

编辑:请注意它不是重复的。我不是问如何解析 JSON 中的某些值,而是问如何返回整个对象,以便 Nashorn 可以解析它,而无需额外的 JSON.parse

最佳答案

您可以从 Java 调用 JSON.parse 或任何其他脚本函数。从 Java 调用 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)");
}
}

关于java - Java 中的解析可在 Java 中访问,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43988791/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com