【发布时间】:2015-01-30 18:09:36
【问题描述】:
我已经用 groovy http://www.infoq.com/news/2014/04/groovy-2.3-json 阅读了有关 json 的新闻。 所以我尝试使用本地方法来(反)序列化包含日期的 groovy bean。 但是我在使用 JsonOutput.toJson(object) 和 JsonObject.fromObject() 和 java.util.Date 时遇到问题
String jsonDat a= groovy.json.JsonOutput.toJson(contact)
Contact reloadContact = new Contact(net.sf.json.JSONObject.fromObject(jsonData))
在 groovy 2.3+ 中使用本机方法的正确方法是什么?
否则,我可以去另一个库,例如 gson (http://www.mkyong.com/java/how-do-convert-java-object-to-from-json-format-gson-api/)
package test
import groovy.json.JsonOutput
import net.sf.json.JSONObject
class JsonTest {
public static void main(String[] args) {
JsonTest test = new JsonTest()
test.serialization()
}
public void serialization(){
Contact contact = new Contact()
contact.name = 'John'
contact.registration = Date.parse('dd/MM/yyyy', '20/10/2011')
String jsonData = JsonOutput.toJson(contact)
println(jsonData)
Object object = JSONObject.fromObject(jsonData)
Contact reloadContact = new Contact(object)
println(jsonData)
}
public class Contact{
String name
Date registration
}
}
编辑:我也尝试使用 JsonSlurper,但总是得到 GroovyCastException: Cannot cast object '2011-10-19T22:00:00+0000' with class 'java.lang.String' to class 'java.util.Date ' 封装测试
import groovy.json.JsonOutput
import groovy.json.JsonSlurper
class JsonTest {
public static void main(String[] args) {
JsonTest test = new JsonTest()
test.serialization()
}
public void serialization(){
Contact contact = new Contact()
contact.name = 'John'
contact.registration = Date.parse('dd/MM/yyyy', '20/10/2011')
String jsonData = JsonOutput.toJson(contact)
println(jsonData)
JsonSlurper slurper = new JsonSlurper()
def object = slurper.parseText(jsonData)
Contact reloadContact = new Contact(object)
println(jsonData)
}
public class Contact{
String name
Date registration
}
}
【问题讨论】:
-
还显示您的联系人类别和您遇到的问题会有所帮助。甚至更好地提供一个最小的例子,显示问题/异常/...
-
还尝试使用 Boon: ObjectMapper mapper = JsonFactory.create() 但由于 Groovy 元类,我得到“检测到循环依赖”:s 我必须错过一些东西才能让本机方法工作......跨度>
标签: java json serialization groovy deserialization