有没有办法改进 Grails 4 JSON 转换器处理 LocalDate 对象的方式?

wub*_*bba 0 grails json localdate

在我的 Grails 4.0.5 应用程序中,我有一个域类AssignedItem

import java.time.LocalDate
class AssignedItem
{
    LocalDate dateAssigned
}
Run Code Online (Sandbox Code Playgroud)

/assignedItem/show/1当我调用使用域类 ( ) 的 JSON 视图的控制器方法时_assignedItem.gson,响应看起来不错:

{
  "id": 1,
  "dateAssigned": "2015-12-30"
}
Run Code Online (Sandbox Code Playgroud)

但在我的服务方法中,我将其转换AssignedItem为 JSON 以便将其发送到 ActiveMQ 队列,JSON 最终变得不必要的复杂。

服务方式

import grails.converters.JSON

void sendSampleData() {
    AssignedItem assignedItem = AssignedItem.first()
    JSON json = assignedItem as JSON
    String jsonString = json.toString(true)
    jmsService.send(queue: assignedItemQueueName, jsonString)
}
Run Code Online (Sandbox Code Playgroud)

上面代码中`jsonString如下:

{
   "id": 1,
   "dateAssigned": {
      "dayOfWeek": {
         "enumType": "java.time.DayOfWeek",
         "name": "THURSDAY"
      },
      "month": {
         "enumType": "java.time.Month",
         "name": "DECEMBER"
      },
      "dayOfMonth": 31,
      "dayOfYear": 365,
      "era": {
         "enumType": "java.time.chrono.IsoEra",
         "name": "CE"
      },
      "year": 2015,
      "monthValue": 12,
      "chronology": {
         "calendarType": "iso8601",
         "id": "ISO"
      },
      "leapYear": false
   }
}
Run Code Online (Sandbox Code Playgroud)

有没有办法修复 的行为assignedItem as JSON或者我应该以AssignedItem其他方式将其转换为 JSON ?

wub*_*bba 5

感谢 @puneet-behl 向我指出了这一点,我能够JsonViewTemplateEngine在我的服务方法中使用 ,以便_assignedItem.gson使用我的 JSON 视图模板 ( ) 来生成 JSON:

void sendSampleData() {
    AssignedItem assignedItem = AssignedItem.first()
    Template t = templateEngine.resolveTemplate('/assignedItem/_assignedItem')
    def writable = t.make(assignedItem: assignedItem)
    def sw = new StringWriter()
    writable.writeTo( sw )
    String jsonString = sw.toString()
    jmsService.send(queue: assignedItemQueueName, jsonString)
}
Run Code Online (Sandbox Code Playgroud)