/ / Analise json usando liftweb em scala sem valor utilizável - json, scala, lift

Analisar json usando liftweb em scala sem valor utilizável - json, scala, lift

Eu estou usando liftweb para analisar JSON de String em scala, alguns dos registros têm 3 campos

val a = {"name": "Alice", "age": 21, "job": "nurse"}

mas alguns outros têm apenas 2 campos

val b = {"name": "Bob", "age": 30}

eu criei case class Pessoa (nome: String, idade: Long, job: String) e quando eu chamo parse (a) ele retorna valor com sucesso, mas quando eu chamo parse (b) aparece exceção

net.liftweb.json.MappingException: No usable value for algorithm
Did not find value which can be converted into java.lang.String

Respostas:

2 para resposta № 1

Se você fizer o tipo de parâmetro job:String você terá problemas, pois isso exigiria que o parâmetro tivesse um valor - e, no seu exemplo, ele não possui.

Eu vou assumir que nós queremos fazer disso uma Option[String] e no exemplo abaixo, basta adicionar vários construtores para corresponder aos seus parâmetros. Algo como isso deve funcionar:

case class Person(name: String, age: Long, job: Option[String]){
def this(name: String, age: Long) = this(name, age, None)
}

Se você tivesse um valor padrão e quisesse job ser um String apenas mude o None para o que você quiser por padrão.

Depois disso, a análise como você fez acima deve funcionar nos dois casos.