我有一个案例类和伴随对象:
case class Person private(name: String, age: Int)
object Person {
def validAge(age: Int) = {
if (age > 18) age.successNel else "Age is under 18".failureNel
}
def validName(name: String) = {
name.successNel
}
def create(name: String, age: Int) = (validAge(age) |@| validName(name))(Person.apply)
}
我想使用 Argonaut 解析一些 JSON 并返回一个 Person 或一些错误,作为一个列表。所以我需要:
- 从字符串中读取 JSON,并验证字符串的格式是否正确
- 将 JSON 解码为 Person 或错误字符串列表。
我想以可以变成更多 JSON 的形式返回错误,例如:
{
errors: ["Error1", "Error2"]
}
我首先尝试使用 Argonauts decodeValidation 方法,该方法返回一个 Validation[String, X]。不幸的是,我需要一个错误列表。
有什么建议么?