[英]Not able to deserialize json to case class using gson
我正在使用 Scala 編程語言並希望將 json 反序列化為大小寫 class
我的案例 class 看起來像這樣
case class Events
(
Name: String,
Field1: Option[Seq[String]],
Field2: Option[Seq[String]],
Field3: Option[Seq[String]]
)
case class RootInterface
(
Events: Seq[Events]
)
json 看起來像這樣
"Events": [
{
"Name": "event1",
"Field1": ["f1"]
},
{
"Name": "event2",
"Field1": ["f1","f2"]
}
]
我必須這樣做的代碼是
val gson = new Gson
gson.fromJson(json, classOf[RootInterface])
當我嘗試這樣做時,我收到以下錯誤
java.lang.RuntimeException:無法為 scala.collection.Seq<***.Events> 調用無參數構造函數。 向 Gson 注冊一個 InstanceCreator 可以解決這個問題。
我可以解決這個問題嗎?
您將無法使用 Java 庫來期待 Java 具有標准案例類的 Bean
var
s)@BeanProperty
)所以你必須使用類似的東西:
case class Events(
@BeanProperty var name: String,
@BeanProperty var field1: Option[Seq[String]],
@BeanProperty var field2: Option[Seq[String]],
@BeanProperty var field3: Option[Seq[String]]
) {
def this() = this("", None, None, None)
}
但這意味着庫使用運行時反射,這會在總線下拋出類型安全。 就個人而言,我認為沒有理由使用 Java JSON 庫,只要您有選擇,因為我在 Scala 庫中有編譯時反射。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.