代码之家  ›  专栏  ›  技术社区  ›  Dónal

将JSON请求数据绑定到命令对象

  •  0
  • Dónal  · 技术社区  · 8 年前

    在Grails 2.5中。X应用程序,我可以直接将请求数据绑定到类型为的命令对象字段 Map

    class MyController {
      def myAction(Command command) {
        Map requestData = command.data
      }
    }
    
    class Command {
      Map data
    }
    

    {"page": 6} 相应的 地图

    [page: new LazilyParsedNumber(6)]
    

    i、 e.存储在 地图 是的一个实例 com.google.gson.internal.LazilyParsedNumber

    这对我来说是个问题。我更希望 地图 等同于以下内容:

    new groovy.json.JsonSlurper().parseText('{"page": 6}')
    

    [page: new Integer(6)]
    

    我已经研究了 customising the databinding

    是否可以将Gson替换为 JsonSlurper

    1 回复  |  直到 8 年前
        1
  •  2
  •   Jeff Scott Brown    8 年前

    JSON请求数据?

    是的,但这不是我们记录或提供任何特定支持挂钩的内容。

    https://github.com/grails/grails-core/blob/v2.5.6/grails-web-databinding/src/main/groovy/org/codehaus/groovy/grails/web/binding/bindingsource/JsonDataBindingSourceCreator.groovy .

    该类的实例由位于的数据绑定插件添加到Spring应用程序上下文中 https://github.com/grails/grails-core/blob/bd7cc10e17d34f20cedce979724f0e3bacd4cdb4/grails-plugin-databinding/src/main/groovy/org/codehaus/groovy/grails/plugins/databinding/DataBindingGrailsPlugin.groovy#L97 .

    您可以做的一件事是编写自己的类,该类扩展了 AbstractRequestBodyDataBindingSourceCreator DataBindingSourceCreator jsonDataBindingSourceCreator 这将用您的替换默认值。然后您可以自己使用任何您喜欢的技术来解析请求体并创建 Map .

    推荐文章