Я знаю, что немного опоздал, но я долго искал решение и ничего не нашел.После многих усилий я обнаружил, что отправка Джексона «Object» с «@BODY» не помогает, когда я изменил тип на «String», он работал для меня.
Вот мой код
def save(@Body String JSON){
def result = [:]
ObjectMapper objectMapper = new ObjectMapper();
//convert json string to object
def obj = objectMapper.readValue(JSON, Course.class);
println(obj)
Course course = new Course(name: obj?.name, pre: obj?.pre,
regno: obj?.regno, enrolled: obj?.enrolled)
course.validate()
if(course.hasErrors()){
println("Error: "+course.errors)
result.put("Error is: ",course.errors)
return result;
}
course.save(flush:true,failOnError: true)
result.put("Message","Successfully Created")
result.put("Result",course)
return HttpResponse.created(result)
}
Передача его в ObjectMapper и последующее преобразование его из строки JSON в Java Object работало для меня.
Переданная мной строка Json выглядит следующим образом:
{
"name" : "Data Structures",
"pre" : "Computer Programming",
"regno" : "249",
"enrolled" : "90"
}
Вотхранение данных до и после изменения в базе данных:
+----+---------+------------------------+-------------------------------+----+
| id | version | name | pre | regno |enrolled |
+----+---------+------------------------+-------------------------------+----+
| 1 | 0 | "Computer Programming" | "Introduction to Programming"| "233"|"26"|
| 2 | 0 | Data Structures | Computer Programming | 249 | 90 |
+----+---------+------------------------+-------------------------------+----+
Надеюсь, что ответ поможет любому, кто ищет альтернативное решение для вышеуказанного решения.