json - grails.converters.JSON 除了少数属性

标签 json grails groovy render converter

我正在使用 grails-1.3.2 和 hbase-0.2.4。

我有以下域类:

class MyClass{
  String val1
  String val2
  String val3

   //----

 }

class MyClassController{
    def someAction = {
        def myClass = new MyClass()
        //----

        String valAsJson = (myClass as JSON)

        render valAsJson 
     }
}

我的问题是,是否有任何捷径只渲染部分属性(例如渲染除 val3 属性之外的所有属性)?

最佳答案

JSON 排除编码器插件

我最近需要解决这个问题。我继续将解决方案打包到一个插件中,使您可以轻松地从 JSON 转换器的输出中排除类属性。它在 Grails 插件门户上可用。

在你之后install the plugin ,您将可以访问 grails.converters.JSON 类中名为 excludeFor*() 的方法。

更详细的文档可以在这里找到:How to use the JSON Exclusion Marshaller

但基本上它可以这样使用:

import grails.converters.JSON

def json, resultTeachersWillSee, resultOtherStudentsWillSee

// Given a TestStudent Domain Class
def student = new TestStudent([
    firstName: "Tobias",
    lastName: "Funke",
    gradePointAverage: 3.6,
    studentID: "FS-210-7312",
    socialSecurityNumber: "555-55-5555"
])
student.save(flush: true)

// When
JSON.excludeForTeachers(TestStudent, ['socialSecurityNumber', 'id', 'class'])

JSON.use('excludeForTeachers') {
    json = new JSON(student)
}
resultTeachersWillSee = json.toString()

// Then
assert resultTeachersWillSee == '{"firstName":"Tobias",
       "gradePointAverage":3.6, "lastName":"Funke", 
       "studentID":"FS-210-7312"}'



// And When
JSON.excludeForOtherStudents(TestStudent, ['gradePointAverage', 'studentID', 
     'socialSecurityNumber', 'id', 'class'])

JSON.use('excludeForOtherStudents') {
    json = new JSON(student)
}
resultOtherStudentsWillSee = json.toString()

// Then
assert resultOtherStudentsWillSee == '{"firstName":"Tobias",
       "lastName":"Funke"}'

JSON.excludeForTeachers(...) 创建一个名为“excludeForTeachers”的命名对象编码器。编码器从结果 JSON 输出中排除学生对象的三个属性。 'socialSecurityNumber' 属性在类中明确定义,而 'id' 属性是由 GORM 在幕后添加的。无论如何,教师不需要查看任何这些属性。

该插件很好地为我服务......我希望其他人也觉得它有帮助。

关于json - grails.converters.JSON 除了少数属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5936300/

相关文章:

javascript - LocalStorage函数插入、编辑Json

java - java中如何将文件路径写入json文件

ios - 解析 JSON 文件

json - 如何从Json文件导入MongoDb

grails - Spring Boot 重新打包 : Jar task not repackaged (didn't match withJarTask)

Grails 和子域

grails - grails ListView 查看行的奇/偶类名

Groovy:检测列表中重复、不连续值的最简单方法

Groovy JsonBuilder 调用方法添加信息

groovy - 在 Groovy 中覆盖 Number 的 asBoolean