Я пишу Scala restful API и используя SprayJson для анализа JSON, который передается во время почтового вызова. Например, мы имеем структуру JSON, который выглядит следующим образом:Использование SprayJson, когда поля json являются необязательными
{"a", "b", "c", "d", "e", "f", "g", "h"}
поля а, б, в и ч необходимы, но другие не являются. У меня есть собственный форматир JSON для класса case. По разным причинам способ структурирования класса case требует, чтобы я сделал пользовательский форматировщик JSON.
Вот фрагмент кода моей функции чтения в форматере:
def read(value: JsValue) = {
value.asJsObject.getFields("a", "b", "c", "d", "e", "f", "g", "h")
case Seq(JsString(a),JsString(b),JsString(c),JsString(d),JsString(e),JsString(f),JsString(g),JsString(h))
new Object(a,b,c,d,e,f,g,h)
case _ => throw new DeserializationException("Object expected")
}
Как я могу реализовать выше, не имея многочисленные строки регистра соответствия все возможные перестановки полей, которые могут возникнуть в?
Спасибо. Тем не менее, я пробовал этот подход на ранней стадии, и он не работает для моего конкретного случая. Я использую подход аннотации для своих классов case, чтобы преобразовать их в схему Avro, поэтому мой класс case определяется как таковой: case class (Data var a: String, var b: String и т. Д.) В настройке поля вверх как var, я больше не получаю данные, переданные в класс case из разбора JSON. Вы, или кто-либо еще знаете, подход, в котором я могу использовать один класс case, с пользовательским форматированием JSON, который будет принимать JSON (a, b, c, d, e, f, g, h) и JSON (a , b, c, f, h) в одной конструкции. - Спасибо, –
Не работает для меня. Если я определяю jsonFormat8, но получаю только 7 полей (один из них был None), то у меня есть исключение – szefuf