【问题标题】:How to put value in JSONObject without quotations如何在没有引号的情况下将值放入 JSONObject
【发布时间】:2016-11-14 06:10:58
【问题描述】:

我正在开发一个使用 Alpacajs 表单的项目,在 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);

但我得到了这个: 调用后 toJSONString();

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

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

谢谢。

【问题讨论】:

  • 请定义“javascript 不起作用”。在 JSON 中,属性名称必须用引号括起来,并且 JS 应该可以正常工作。在 JSON 字符串中传递函数可能是您的实际问题?
  • JS 对象可以包含函数。但是 JSON 字符串不能包含函数。
  • 这里是链接alpacajs.org/docs/api/forms.html,我从中获取示例创建表单。如果我把它放在它工作正常但如果 json 值有双引号则它不起作用。
  • 该页面上的不是 JSON。那是成熟的 Javascript。 JSON 是 Javascript 的一个非常有限的子集,它不允许您定义函数。
  • 我没有定义函数,但我需要这种 JSON,因为这种格式在 Alpacajs 中用于在表单上创建操作。

标签: javascript java json alpacajs


【解决方案1】:

我一直在研究它并浏览了JSONObject的源代码,得到了一个想法并解决了问题。

JSONObject 是在 String 而不是 Object 上添加引号,所以我做了一个类,

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;
    }
}

并像这样制作该类的对象:

        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();
            }
        }
    }

【讨论】:

    猜你喜欢
    • 2012-02-11
    • 2021-12-19
    • 1970-01-01
    • 2018-11-29
    • 2017-05-20
    • 2021-04-12
    • 2017-01-27
    • 2021-10-31
    相关资源
    最近更新 更多