如何在没有引号的情况下将值放入 JSONObject

How to put value in JSONObject without quotations

我正在开发一个使用 Alpajajs 表单的项目,在 java 上创建模式 JSON,现在我需要制作一个 json,它具有不带双引号的价值,例如:

        "buttons": {
            "submit": {
                "click": function() {
                    this.refreshValidationState(true);
                    if (!this.isValid(true)) {
                        this.focus();
                        return;
                    }
                    this.ajaxSubmit();
                }
            }
        }

这是我的代码:

JSONObject ob = new JSONObject();
JSONObject button = new JSONObject();
JSONObject submit = new JSONObject();
        submit.put("click", "function() {"
                  +"this.refreshValidationState(true);"
                  +"if (!this.isValid(true)) {"
                  +"     this.focus();"
                  +"    return;"
                  +"}"
                  +"this.ajaxSubmit();"
                  +"}");
button.put("submit", submit);
ob.put("buttons", button);

但我明白了: 在调用 JSONString();

之后
"buttons": {
  "submit": {
    "click": "function() {this.refreshValidationState(true);if (!this.isValid(true)) {     this.focus();    return;}this.ajaxSubmit();}"
  }

click 的值在双引号中,但我需要它不带引号,如何使用 toJSONString() 方法从 JSONObject 中删除双引号。 任何想法。

谢谢。

我研究过它并查看了 JSONObject 的源代码,有了一个想法并解决了问题。

JSONObject 在 String 上添加引号,但在 Object 上没有,所以我做了一个 class,

public class Method implements java.io.Serializable{

    /** use serialVersionUID for interoperability */
    private static final long serialVersionUID = 1L;

    String value;

    public Method(String value) {
        super();
        this.value = value;
    }

    public String getValue() {
        return value;
    }

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

    @Override
    public String toString(){
        return this.value;
    }
}

然后把 class 的对象变成这样:

        JSONObject submit = new JSONObject();
        JSONObject button = new JSONObject();
        String value = "function() {"
                +"this.refreshValidationState(true);"
                +"if (!this.isValid(true)) {"
                +"     this.focus();"
                +"    return;"
                +"}"
                +"this.ajaxSubmit();"
                +"}";
        Method click =new Method(value);
        submit.put("click", click);
        button.put("submit", submit);
        button.toJSONString();

现在问题已解决,代码运行正常,输出结果如我所愿。

    "buttons": {
        "submit": {
            "click": function() {
                this.refreshValidationState(true);
                if (!this.isValid(true)) {
                    this.focus();
                    return;
                }
                this.ajaxSubmit();
            }
        }
    }