13

現在、さまざまなデータ ソースからいくつかのメトリックを抽出し、それらを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の暗黙的な変換を使用できるという制限の下で、実際にはプリミティブ型であることを意味します)。 )。この演算子は、 から を構築する優れた方法を提供します。これは、 の単なる型エイリアスです。AJValueA~JObjectJField(String, JValue)

この場合、マップ値の型はAnyであるため、暗黙的な変換は行われず、コンパイラは次のエラーをスローします。

                    value ~ is not a member of (String, Any)
[error]             val json = r.reduceLeft(_ ~ _)

私が達成したいことに対する解決策はありますか?

4

2 に答える 2

-2

json4s にはメソッドがあります。

pretty(render(yourMap))
于 2016-09-23T12:40:40.447 に答える