2016-11-14 4 views
-2

я работаю над проектом с использованием Alpacajs форм, создание схемы JSON на Java, теперь мне нужно сделать 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();}" 
    } 

Значение щелчка в двойных кавычках, но мне это нужно без кавычек, как я могу удалить, что двойные кавычки из JSONObject с использованием метода toJSONString(). любая идея.

Спасибо.

+0

Пожалуйста, определите, что «_javascript не работает над этим». В JSON имена свойств должны быть заключены в кавычки, и JS должен работать нормально. Передача функции внутри строки JSON, вероятно, является вашей реальной проблемой? – Teemu

+0

Объекты JS могут содержать функции. Но строки JSON не могут содержать функции. – Ananth

+0

вот ссылка http://www.alpacajs.org/docs/api/forms.html, откуда я получаю пример создания формы. если я помещаю его, поскольку он работает нормально, но он не работает, если значение json имеет двойные кавычки. –

ответ

1

Я работал над этим и просматривал исходный код JSONObject, получил Идею и решил проблему.

JSONObject добавляет расценки на String, но не на объекте, так что я сделал класс,

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(); 
      } 
     } 
    } 
Смежные вопросы