gpt4 book ai didi

java - Rhino 在 Java 中评估 javascript 对象

转载 作者:行者123 更新时间:2023-11-30 17:53:06 29 4
gpt4 key购买 nike

我是 Rhino 的新手,尝试将 javascript 对象转换为 java 对象,但无法这样做。它似乎没有正确评估。

我拥有的 javascript 是,

var myObject = new Object();
myObject.string1 = 'Hello';
myObject.string2 = 'World';
myObject.id = 1;
var parser = new Packages.com.MyParser();
var returnStr = parser.PrintObj(myObject);

我有以下 java 类,我想对其进行评估,

public class Person extends ScriptableObject {

private int id;
private String string1;
private String string2;

public Person() {}

public void jsConstructor() {
this.string1 = "";
this.string2 = "";
this.id = 0;
}

public int getID()
{
return this.id;
}

public void jsSet_id(int value)
{
this.id = value;
}

public int jsGet_id()
{
return this.id;
}

public String jsGet_string1()
{
return this.string1;
}

public void jsSet_string1(String value)
{
this.string1 = value;
}

public String jsGet_string2() {
return this.string2;
}

public void jsSet_string2(String value)
{
this.string2 = value;
}

@Override
public String toString() {
return id + " " + string1 + " " + string2;
}

@Override
public String getClassName() {
return "Person";
}

我的解析器的框架是,

public class MyParser {
public String PrintObj(ScriptableObject obj) {
// Need to convert to Person object here
// Obviously casting doesnt work here
return null;
}
}

谢谢

最佳答案

好的,明白了!

首先,我需要在 javascript 中将类定义为。起初它提示找不到没有命名空间“com”的类。不得不补充一点……

defineClass("com.Person")
var myObject = new Person();
myObject.string1 = 'Hello';
myObject.string2 = 'World';
myObject.id = 1;
var parser = new Packages.com.MyParser();
var returnStr = parser.PrintObj(myObject);

然后在解析器中我添加了以下内容,

public String PrintObj(ScriptableObject obj) {
try {
Person pObj = (Person)Context.jsToJava(obj, Person.class);
System.out.println("Printing person: " + pObj);
}
catch (Exception e) {
e.printStackTrace();
}
return null;
}

关于java - Rhino 在 Java 中评估 javascript 对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18565421/

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