问题描述
我使用 ScriptEngine 和 rhino 作为引擎名称来评估 Android 中的 javascript。我评估的 javascript 代码如下所示:
var course_data = [];
course_data[0] = [];
course_data[0]['course_name'] = 'Programming 101';course_data[0]['course_code'] = 'XXX12345';course_data[0]['course_credit'] = '2';
course_data[1]['course_name'] = 'Next Level Programming';course_data[0]['course_code'] = 'XXX12356';course_data[0]['course_credit'] = '3';
ScriptEngine get("course_data") 方法返回 org.mozilla.NativeArray 对象。我无法使用 org.jdk.Nashorn.api.scripting。ScriptObjectMirror,因为 NativeArray 无法转换为 ScriptObjectMirror。
如何从这个 NativeArray 对象中获取每个 course_data 课程名称、代码和学分值?
非常感谢。
解决方法
我使用 ScriptableObject 来获取主 NativeArray 中的每个 NativeArray。
ScriptableObject data = (ScriptableObject) engine.get("course_data ");
for(int j=0;j<data.size();j++){
NativeArray courseArray = (NativeArray) data.get(j);
String courseName= courseArray .get("course_name").toString();
String courseCode= courseArray .get("course_code").toString();
int courseCredit= Integer.parseInt(courseArray .get("course_credit").toString());
System.out.println(courseName+" "+courseCode+" "+courseCredit);
}