2016-11-14 29 views
-2

我在一个项目中使用Alpacajs形式的合作,建立在Java模式JSON,现在我需要做哪些具有价值与像没有双引号一个JSON:如何把价值的JSONObject中没有报价

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

点击的价值是在双引号,但我需要它时没有引号,我怎么能删除使用toJSONString()方法的JSONObject双引号。 任何想法。

谢谢。

+0

请定义“_javascript不适用于它_”。在JSON中,属性名称必须用引号括起来,JS应该可以正常工作。在JSON字符串中传递函数可能是您的实际问题? – Teemu

+0

JS对象可以包含函数。但是JSON字符串不能包含函数。 – Ananth

+0

这里是我从中获取示例创建表单的链接http://www.alpacajs.org/docs/api/forms.html。如果我把它作为它工作正常,但它不工作,如果JSON值有双引号。 –

回答

1

我一直在努力,并通过JSONObject的源代码,得到一个想法和解决问题。

的JSONObject是增加对字符串,但不是对象的报价,所以我做了一个类,

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