无法将json数据获取到控制器中,控制器将json请求显示为null;

无法将json数据获取到控制器中,控制器将json请求显示为null;,json,rest,grails,controller,Json,Rest,Grails,Controller,我试图将JSON数据发送到控制器,但控制器将其打印为null 以下是我的控制器代码的内容: @Transactional def save(User user) { println "${request.JSON}" println "${request.JSON.owner}" println request.format user = new User(request.JSON) if (user == null) { trans

我试图将JSON数据发送到控制器,但控制器将其打印为null

以下是我的控制器代码的内容:

@Transactional
def save(User user) { 

    println "${request.JSON}"
    println "${request.JSON.owner}"
    println request.format
    user = new User(request.JSON)

    if (user == null) {
        transactionStatus.setRollbackOnly()
        render status: NOT_FOUND
        return
    }

    if (user.hasErrors()) {
        transactionStatus.setRollbackOnly()
        respond user.errors, view:'create'
        return
    }

    user.save flush:true

    respond user, [status: CREATED, view:"show"]
}
我已经尝试了在这个链接上给出的一切

URL映射:

 post "/user/"(controller: "user",parseRequest:true, action:"save")
当我尝试这个:

curl --data '{"owner":"new owner"}' --header "Content-Type: application/json" http://localhost:8080/user/
我得到的输出是:

{"message":"Property [owner] of class [class com.sample.User] cannot be null","path":"/user/index","_links":{"self":{"href":"http://localhost:8080/user/index"}}
这是控制器的输出:

[:]
null
json
我使用rest api配置文件创建了应用程序

控制器接受“POST”操作的“text/html”类型,但不接受JSON 我可以用JSON作为内容类型更新现有对象

我的域类有三个字段

String owner
String category
Boolean deleted = false
我正在使用postman发送JSON请求

{
    "owner":"some user",
    "category":"rule01"
 }

我做错了什么?

[编辑]

好,我们一点一点走,;在浏览器中尝试此URL

http://localhost:8080/user/save?owner=the+beautiful&category=homo+sapiens
使用下面的代码

@Transactional
def save() {     
    println params.owner
    println params.category

    render (params as JSON)
}

然后在这里发布,无论你在浏览器中收到什么。

我遇到了同样的问题,在尝试了一些猜测之后:)下面是我如何设法解决它的

Json请求:

我的控制器: 对于卷曲: 我试图在我的控制器中避免jsonSlurper,但没有它我就无法得到我的值


希望有帮助。

哪个grails版本?我正在使用grails 3.2.1发布您的
params
的转储。尝试了这个。。仍然得到“null”当您执行
println params
时,输出是什么?我在打印时得到“null”作为输出您的意思是没有
params
。但是在你发布的问题中,
request.format
json
;是吗?是的,我从邮递员那里经过。我从grails 3.x.x获得的
println参数['owner']
println参数['category']
的值为空
 def postentry (accountno){

 def fulldata = request.reader.text
 def ddd =  new JsonSlurper().parseText(fulldata)
 accountno = ddd.accountno[0].toString()
 println accountno
 transidd = ddd.transid[0].toString()
 transamtt = ddd.transamt[0].toString()
 transtype = ddd.transtype[0]
 }
 POST /transact HTTP/1.1
 Host: localhost:8080
 Content-Type: application/json
 Cache-Control: no-cache
 Postman-Token: aa898872-e448-bace-9f6d-143bdc0b03db

 [{
 "accountno": 000710023005,
 "transid": 16,
 "transamt": 20.25,
 "transtype": "withdrawal"
 }]