Есть ли способ цикла для каждой переменной-члена класса? Это тривиальный со списками и массивами, но я должен построить корпус класса с каждым отображением JSON поля для переменной-члена использовать рамки Play читает/валидатор APIScala foreach member переменная
ответ
вы имели в виду что-то вроде этого:
case class SomeClass(a: Int, b: Int)
SomeClass(1,2).productIterator.foreach{ a => println(a)}
это даст вам результат: 1 2
Или если вы пытаетесь построить объект из json. Вы можете определить читает в вашем случае классе, который deserialises JSON к объекту:
override def reads(json: JsValue): JsResult[SomeClass] = JsSuccess(SomeClass(
(json \ "a").as[Int],
(json \ "b").as[Int]
)
)
затем использовать десериализацию:
val json = Json.obj() //Your json
json.validate[SomeClass]
json.fold(
errors => {
Json.obj("status" -> "Not OK", "message" -> JsError.toJson(errors))
},
preset => {
Json.obj("status" -> "OK")
}
)
Спасибо, я уже сделал преобразование в объект класса. Часть продукта - это то, что мне нужно. – kliew
Если вы хотите сравнить Json
и получить разницу, может быть лучше использовать JsObject
методов ?
Например, fieldSet
вернуть все поля в качестве комплекта. Вы можете использовать diff
в предыдущем и текущем поле, чтобы получить измененные поля. Это быстрое решение и никаких конкретных классов.
Не могли бы вы уточнить? Вы имеете в виду итерацию по каждому свойству в экземпляре класса? – 7zark7
yup, вот что я имею в виду – kliew
С вашего вопроса у меня такое чувство, что вы делаете что-то не так. Можете ли вы рассказать о том, что именно вы пытаетесь сделать, например, с примером? –