У меня есть следующий случай класс:Play 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' в представлении Json PlayJson, которое является 'JsValue'. Если у вас уже есть JsValue ... вам тоже не нужно разбираться, и вы не можете его разобрать. –
Хорошо! Извините за путаницу. JSON читается как строка из базы данных, и я анализирую его на JsValue с помощью Json.parse (...) – sparkr
Если это простая строка, вы можете использовать Json.toJson («string») –