0
我正在嘗試編組和解組一個groovy bean。我稍後在Java中使用這些功能。這個想法是我使用JsonOutput編組對象並用JsonSlurper解組。我的bean包含一個子對象的映射。Groovy JsonSlurper和帶有(子)對象的地圖
問題是,JsonSlurper將映射的值解組到LazyMap而不是原始對象。如果我直接包含對象的解組工作。
這裏我在做什麼的例子...
import java.util.Map
import groovy.json.JsonOutput
import groovy.json.JsonSlurper
class ClassA {
ClassB subClass
Map<String, ClassB> subClasses = [:]
static def ClassA build(String json){
new JsonSlurper().parseText(json)
}
def String toString() {
JsonOutput.toJson(this)
}
}
...和ClassB ...
import groovy.json.JsonOutput
class ClassB {
String message = [:]
def String toString() {
JsonOutput.toJson(this)
}
}
...這裏失敗的Java代碼...
ClassA classA = new ClassA();
ClassB classB = new ClassB();
classB.setMessage("Hello World!");
classA.setSubClass(classB);
classA.getSubClasses().put("First", classB);
System.out.println(ClassA.build(classA.toString()).getSubClass().getMessage());
System.out.println(ClassA.build(classA.toString()).getSubClasses().get("First").getMessage());
...倒數第二行輸出 「Hello World!」,如預期但最後一行失敗...
java.lang.ClassCastException: groovy.json.internal.LazyMap cannot be cast to ClassB
是否有一個(更好的)方法來將常規對象編組和解組爲json?
問候, 托馬斯