私は2つのケースクラスを持っています。主なもの、Request
は、2つのマップを含んでいます。 最初のマップには、キーと値の両方の文字列があります。 2番目のマップには文字列キーがあり、2番目のケースクラスのインスタンスである値KVMapList
があります。ScalaのケースクラスをJSONに変換
Request
をJSON表現に変換する必要があります。 次のコードは、これを実行しようとしている:
import com.fasterxml.jackson.annotation.PropertyAccessor
import com.fasterxml.jackson.module.scala.experimental.ScalaObjectMapper
import com.fasterxml.jackson.annotation.JsonAutoDetect.Visibility
import com.fasterxml.jackson.databind.ObjectMapper
def test(req:Request):String {
val mapper = new ObjectMapper() with ScalaObjectMapper
mapper.setVisibility(PropertyAccessor.ALL, Visibility.ANY)
var jsonInString: String = null
try {
jsonInString = mapper.writeValueAsString(request)
}
catch {
=case e: IOException => {
e.printStackTrace
}
jsonString
}
しかし、これは動作しません。 Request
クラスが移入された場合でも、出力は次のとおりです。
{"parameters":{"underlying":{"some-value":""},"empty":false,"traversableAgain":true},"deps":{"sizeMapDefined":false,"empty":false,"traversableAgain":true}}
対応するJavaクラスを持つJSONオブジェクトマッパーを使用することは簡単ですが、まだそれはScalaで働いて持っていません。どんな援助も非常に感謝しています。
req.asJson.noSpaces:error:scala.MatchError:true(クラスscala.reflect.internal.Trees $ Literal)のコンパイル時に、ビルドに失敗しました。 jar circe-parse_sjs0.6_2.11とcirce-generic_2.11を使用しています(両方ともグループio.circeから)。ありがとう! – user1052610