被这个难住了。使用 PlayJSON 和他们的 JsObject。
Wart remover 正在用胡萝卜(^)标记map
调用,并在该行说 Inferred type contains 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 是scala.collection.Seq[scala.Tuple2[scala.Predef.String, play.api.libs.json.JsValue]]
我发现令人困惑的是您知道该 valfieldValueMap
的返回类型并且您知道jsObj.fields