現在、さまざまなデータ ソースからいくつかのメトリックを抽出し、それらをMap[String,Any]
キーがメトリック名に対応し、値がメトリック値に対応するタイプのマップに格納しています。これは多かれ少なかれ汎用的である必要があります。つまり、値の型はプリミティブ型またはプリミティブ型のリストにすることができます。
このマップを JSON 形式の文字列にシリアル化したいので、json4s
ライブラリを使用しています。問題は、それが可能ではないように見え、そのための可能な解決策が見当たらないということです。次のようなものがすぐに使えると思います:)
val myMap: Map[String,Any] = ... // extract metrics
val json = myMap.reduceLeft(_ ~ _) // create JSON of metrics
私が見たソース コードをナビゲートするjson4s
と、プリミティブ型をJValue
に変換したり、 に変換したりするTraversable[A]/Map[String,A]/Option[A]
ための暗黙的な変換が提供されます ( からへJValue
の暗黙的な変換を使用できるという制限の下で、実際にはプリミティブ型であることを意味します)。 )。この演算子は、 から を構築する優れた方法を提供します。これは、 の単なる型エイリアスです。A
JValue
A
~
JObject
JField
(String, JValue)
この場合、マップ値の型はAny
であるため、暗黙的な変換は行われず、コンパイラは次のエラーをスローします。
value ~ is not a member of (String, Any)
[error] val json = r.reduceLeft(_ ~ _)
私が達成したいことに対する解決策はありますか?