不带simple-json对象引号的渲染值

时间:2012-09-11 09:51:19

标签: json java-ee

我尝试在Servlet中执行:

JSONObject json = new JSONObject();
json.put( "eventContent", "event" );
String script = "var object= " + json.toJSONString() + ";";
response.getWriter().print( something + script + another );

脚本的内容当然是:

var object = {"eventContent":"event"};

但我将此String渲染为javascript函数并尝试引用现有的javascript对象“event”。所以我需要JSON Sting中没有引号的值。

var object = {"eventContent":event};

有什么建议吗? :)

非常感谢

1 个答案:

答案 0 :(得分:2)

我认为这不是真正的JSON,因为你不应该引用变量。无论如何,您可以通过实现JSONString界面来获得所需的内容,如此。

public static void main(String[] args) throws JSONException {
    JSONObject json = new JSONObject();
    json.put( "eventContent", new JSONVariable("event") );
    System.out.println("var object= " + json.toString() + ";");
}

private static class JSONVariable implements JSONString { // implements JSONAware with com.googlecode.json-simple
    private final String name;

    public JSONVariable(String name) {
        this.name = name;
    }

    @Override
    public String toJSONString() {
        return name;
    }
}