当前位置: 首页 > 面试题库 >

Rhino:从Java内部返回JSON

高承望
2023-03-14
问题内容

我在Java中具有JSON序列化对象的字符串表示形式,例如"{\"name\":\"John\",\"age\":24}"。我如何解析并将其返回到JavaScript上下文,就像JSON.parse(str)在JS中一样?谢谢。


问题答案:

Rhino的最新版本只有四个arg,第四个不能为null。为了解决这个问题,您必须创建一个实现org.mozilla.javascript.Callable的简单类:

import org.mozilla.javascript.Callable;
import org.mozilla.javascript.Context;
import org.mozilla.javascript.Scriptable;

public class NullCallable implements Callable
{
    @Override
    public Object call(Context context, Scriptable scope, Scriptable holdable, Object[] objects)
    {
        return objects[1];
    }
}

然后可以像这样调用NativeJSON.parse:

Object result = NativeJSON.parse(context, scope, jsonString, new NullCallable());


 类似资料:
  • 我正在尝试修改一些嵌入在Java中的Javascript代码,以将多个值返回给调用Java代码。 Java代码(调用Javascript): Javascript代码(由Java调用): 我希望返回多个值。 我尝试修改Javascript以返回HashMap,如下所示: 但是当我在Java端进行强制转换时,我得到了一个ClassCastException: 结果: 我不喜欢在HashMap中返回它

  • 问题内容: 如何从函数内部返回值? 这是我的基本设置: 问题答案: 使用回调函数,这是JavaScript的方式:

  • 问题内容: 我的代码在这里: 现在,我想在单击“确认”按钮后返回true。因此,如何从内部类-方法的OnClickListener返回“ true”。 需要一些帮助,谢谢。 问题答案: 在这种情况下,您不能从内部类返回任何东西。在这种情况下,这没有多大意义。该程序是否应该在您的onClick函数中等待,直到它返回某些内容?收听者的工作方式并非如此。您需要做的就是获取计划返回的代码,如果返回“ tr

  • 我的接口定义为: 然而,这还不够明确,因为我不知道返回的是什么字段。我想要像这样的东西: 但是这会引发NameError,因为还没有定义结果类。是否有任何方法可以指定函数的返回类型(以便内部成员可以通过点运算符访问),而无需为每个函数显式创建结果类? EDIT我没有在他们自己的模块中进行定义,因为我认为会有太多名字尴尬冗长的模块。定义一个内部类会更好,因为它不会每次都强制创建一个新的类名,而且,因

  • 我正在尝试从查询中获取剩余的元组。在本例中,course_id3和4来自courses,因为用户admin@没有使用这些(他们只使用了1和2)。当我尝试左联接时,表已经很好地联接了,查询也正常工作... 但这将返回课程1和2,而不是3和4

  • 问题内容: 问题答案: 有很多原因不回来。 但这通常归结为以下事实:执行的命令不会退出。 同样,这可能有很多原因。 一个普遍的原因是该过程产生了一些输出,而你没有从适当的流中读取。这意味着一旦缓冲区已满,进程就会被阻塞,并等待你的进程继续读取。你的进程依次等待另一个进程完成(之所以不会,是因为它等待你的进程,…)。这是一个典型的僵局情况。 你需要不断从流程输入流中读取内容,以确保它不会被阻塞。