我正在尝试将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?
答案 0 :(得分:2)
另一种选择是使用带注释的gson serializer
:https://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中返还的资本。 希望它有所帮助!!