如何在Groovy中保留JSON转换器方法中的Letter Case?

时间:2016-07-23 18:31:27

标签: java json grails groovy

我正在尝试将groovy对象解析为JSON。属性名称不符合正确的驼峰形式。

class Client {
    String Name
    Date Birthdate
}

当我使用这个

Client client = new Client(Name: 'Richard Waters', Birthdate: new Date())
println (client as JSON).toString(true)

我得到了这个

"client": {
      "name": 'Richard Waters',
      "birthdate": "2016-07-22T03:00:00Z",
}

如何在属性键的开头保留de Upper Case?

2 个答案:

答案 0 :(得分:2)

另一种选择是使用带注释的gson serializerhttps://google.github.io/gson/apidocs/com/google/gson/annotations/SerializedName.html

@Grab('com.google.code.gson:gson:2.7+')
import com.google.gson.Gson
import com.google.gson.annotations.SerializedName

class Client {
    @SerializedName("Name")
    String name

    @SerializedName("Birthdate")
    Date birthdate
}

def client = new Client(name: 'John', birthdate: new Date())

def strJson = new Gson().toJson(client)
println strJson

答案 1 :(得分:-1)

您正在打破标准命名约定,因此它会自动将其转换为驼峰大小写。

因此,如果你想覆盖驼峰的情况,一个选项是编写覆盖object.getProperties()又名object.properties的自定义方法,以在内部返回自定义地图,创建的地图使用getName() MetaProperty.java类的方法,而不是获取不动产名称。

因此,您必须执行的唯一工作是编写将对象转换为地图的自定义通用方法。

然后如果你使用对象作为JSON,它将返回预期的json。

例如

class Client {
    String name
}

Client client = new Client(name: 'Richard Waters')
println (["Name":"test"] as grails.converters.JSON)

这里的地图名称的N是资本,也是在json中返还的资本。 希望它有所帮助!!