我有以下的情況下類:播放JSON讀取錯誤當讀取一個序列
case class VirtualAssetConfigParam(
id: Long,
pMin: Double,
pMax: Double,
dispatchPriority: Int
)
object VirtualAssetConfigParam {
implicit val virtualAssetConfigParamReads: Reads[VirtualAssetConfigParam] = (
(JsPath \ "id").read[Long] and
(JsPath \ "power_min").read[Double] and
(JsPath \ "power_max").read[Double] and
(JsPath \ "dispatch_priority").read[Int]
)(VirtualAssetConfigParam.apply _)
}
這是我從數據庫中獲取的JSON:
[{"id":"1","power_min":"200","power_max":"400","dispatch_priority":"1"},{"id":"2","power_min":"200","power_max":"400","dispatch_priority":"2"},{"id":"3","power_min":"-700","power_max":"0","dispatch_priority":"3"}]
當我試圖驗證它作爲(其中virtualAssetConfigParam是一個字符串,我從數據庫中獲取):
Json.parse(virtualAssetConfigParam).validate[List[VirtualAssetConfigParam]]
我碰到下面的驗證RESU lt:
JsError(
List(
((0)/dispatchPriority,List(ValidationError(List(error.path.missing),WrappedArray()))),
((0)/pMin,List(ValidationError(List(error.path.missing),WrappedArray()))),
((0)/pMax,List(ValidationError(List(error.path.missing),WrappedArray()))),
((0)/id,List(ValidationError(List(error.expected.jsnumber),WrappedArray()))),
((1)/dispatchPriority,List(ValidationError(List(error.path.missing),WrappedArray()))),
((1)/pMin,List(ValidationError(List(error.path.missing),WrappedArray()))),
((1)/pMax,List(ValidationError(List(error.path.missing),WrappedArray()))),
((1)/id,List(ValidationError(List(error.expected.jsnumber),WrappedArray()))),
((2)/dispatchPriority,List(ValidationError(List(error.path.missing),WrappedArray()))),
((2)/pMin,List(ValidationError(List(error.path.missing),WrappedArray()))),
((2)/pMax,List(ValidationError(List(error.path.missing),WrappedArray()))),
((2)/id,List(ValidationError(List(error.expected.jsnumber),WrappedArray())))
)
)
什麼問題?我看不出爲什麼這會失敗!
'Json.parse'用於將Json-string解析爲PlayJson的JsValue表示。如果你已經有了JsValue ...你不需要解析它,也不能解析它。 –
好的!對困惑感到抱歉。從數據庫讀取JSON作爲字符串,然後使用Json.parse(...) – sparkr
將其解析爲JsValue。如果這是一個簡單的字符串,那麼可以使用Json.toJson(「string」) –