我希望使用方括号将json数据传递给后端,而不是grails中的花括号

时间:2017-05-03 05:22:52

标签: json grails

这是用于检索数据的grails的后端

def addMessageA() {

    JSONObject requestJson= request.JSON;
    Message message = new Message();
    message.message = requestJson.message;
    message.category = Category.get(requestJson.cId);
    message.heading = requestJson.heading;
    message.date= new Date();
    message.electionArea = ElectionArea.get(requestJson.eId)
    message.palika = Palika.get(requestJson.pId)
    message.ward = Ward.get(requestJson.wId)
    message.member = requestJson.name;
    def fbId = requestJson.memberFbId
    message.memberFbId = fbId;
    message.phone = requestJson.phone;

    JSONObject object = new JSONObject();
    if (message.save(flush: true, failOnError: true)) {
        object.put("save", "success")
    } else {
        object.put("save", "fail")
    }
    render object;
}

这是其工作的格式,但我想使用方括号而不是花括号。我正在使用post方法。

这是后端的网址

http://localhost:8080/back/message/addMessageA

这是将数据发送到后端json格式的格式,我希望使用方括号而不是大括号。

{     消息:“कुलगार्हस्थथत्पादनवृद्धिदर6.9 4प्रतिशतपुग्ने”,

    cId:“3”,     标题:“कुल”,     eId:“70”,     pId:“740”,     wId:“5555”,     名称:“सुमन先生”,     memberFbId:“012306547891234”,     电话:“986032764” }

1 个答案:

答案 0 :(得分:1)

JSON是一种特定的语法和格式(请参阅http://www.json.org/)。它被设计为最小化,但这种最小语法旨在非常具体地表示数据元素。简而言之,

  • 大括号( { ... } )定义对象
  • 括号( [ ... ] )定义数组
  • 每个对象元素都标有
  • 数组元素未标记

直接用括号替换大括号将不再与JSON语法一致。

[ message : " … ", cId : "3", heading : " … ", eId : "70", pId : "740", wId : "5555", name : " … ", memberFbId : "012306547891234", phone : "986032764" 
]

为什么内容必须用括号括起来?根据您的答案,一个选项可能是将现有对象包装在括号中,创建一个包含1个元素的数组。

[ { message : " … ",cId : "3", heading : " … ", eId : "70", pId : "740", wId : "5555", name : " … ", memberFbId : "012306547891234", phone : "986032764" 
  } 
]

这是合法的JSON。我不确定request.JSON的JSONObject是否会正确解释这个问题(过去曾经存在问题)。您可以通过其getInputStream()拉取正文内容,并使用JSON解析器将文本解释为JSON数组。然后,数组的第一个元素与当前实现中使用的对象相同。

或者,您可以阅读内容文本,使用大括号转换开头和右括号,将非JSON转换为有效的JSON,将其转换为JSONObject,然后从那里继续。