この問題を解決しました。 PlayJSONとそのJsObjectを操作する。Serializableを含む推論型を解決する方法
ワートリムーバーは、map
にニンジン(^)を呼び出し、その行にSerializableを含む推論型を言っています。コードは正常に機能していますが、なぜツールがこれを報告しているのか、またこのエラーを取り除く方法について不思議です。
def getPrintVersionOfJsonObj(jsObj: JsObject): JsObject = {
val fieldValueMap: Seq[(String,JsValue)] = jsObj.fields.map {
case (fieldName, fieldValue: JsNumber) => (fieldName, fieldValue)
case (fieldName, fieldValue: JsBoolean) => (fieldName, fieldValue)
case (fieldName, fieldValue: JsString) => (fieldName, fieldValue)
case (fieldName, fieldValue: JsArray) => (fieldName, convertJsArrayToPrettyString(fieldValue))
case (fieldName, fieldValue: JsObject) => (fieldName, getPrintVersionOfJsonObj(fieldValue))
case (fieldName, fieldValue: JsValue) => (fieldName, JsString(Json.prettyPrint(fieldValue)))
}
JsObject(fieldValueMap)
}
JSObject.fieldsは私が混乱を見つけることは、あなたがそのヴァルfieldValueMap
のための戻り値の型を知っていたあるscala.collection.Seq[scala.Tuple2[scala.Predef.String, play.api.libs.json.JsValue]]
であり、あなたはそれでもコンパイル(Iドンてください。あなたは
4番目の値は '' '(String、JsString)' ''を返し、JsStringは '' 'caseクラスJsString(value:String)extends JsValue''' – Barry
その場合、wartremoverは間違っています(次の行'JsValue'も返す)。コードは実際にコンパイルされますか? – Dima
yeaはコンパイルし、意図したとおりに動作し、プロジェクトに疣贅リムーバーを追加し、問題を解決しようとしていました – Barry