Информация об изменениях

Сообщение Re[2]: Как называть одинаковые сущности в разных слоях? от 17.02.2020 20:57

Изменено 17.02.2020 21:05 bnk

Re[2]: Как называть одинаковые сущности в разных слоях?
Здравствуйте, maxkar, Вы писали:

M> Если вам нужен JSON, создавайте JSON. При нормальном API (пример) его создавать проще, чем перекладывать из объекта в объект.


val myJson = Json.parse("""{"a" : 3, "arr" : ["test"], "nested" : {"obj" : 3}})
val a1 = myJson.a.as[Int] // specify the expected type
val a2 : Int = myJson.a // and there is an implicit conversion
val nested = myJson.nested.obj.as[Int] // traverse an object
val v1 : Option[Int] = myJson.nonExistent // reading optional values
val v2 : Option[Int] = myJson.a // also reading optionals
val items = json.arr.as[Seq[JsonValue]].map(_.as[String]) // handling collections
val jsonMap : Map[String, JsonValue] = myJson.nested // object could be treated as maps

val json1 : JsonValue = Json.make(
  "a" -> a1, // put a value
  "b" -> v1, // optionally put a value
  "c" -> items.map(i => i : JsonValue) // put a collection of values
)


Это нормальный api? Лично у меня чуть кровь из глаз не потекла, imho, это больше похоже на энтерпрайз, обнять и плакать..
Просто интересно, каким образом вот это может быть лучше нормально объявленных классов?
Re[2]: Как называть одинаковые сущности в разных слоях?
Здравствуйте, maxkar, Вы писали:

M> Если вам нужен JSON, создавайте JSON. При нормальном API (пример) его создавать проще, чем перекладывать из объекта в объект.


val myJson = Json.parse("""{"a" : 3, "arr" : ["test"], "nested" : {"obj" : 3}})
val a1 = myJson.a.as[Int] // specify the expected type
val a2 : Int = myJson.a // and there is an implicit conversion
val nested = myJson.nested.obj.as[Int] // traverse an object
val v1 : Option[Int] = myJson.nonExistent // reading optional values
val v2 : Option[Int] = myJson.a // also reading optionals
val items = json.arr.as[Seq[JsonValue]].map(_.as[String]) // handling collections
val jsonMap : Map[String, JsonValue] = myJson.nested // object could be treated as maps

val json1 : JsonValue = Json.make(
  "a" -> a1, // put a value
  "b" -> v1, // optionally put a value
  "c" -> items.map(i => i : JsonValue) // put a collection of values
)


Это нормальный api? Лично у меня чуть кровь из глаз не потекла, imho, это больше похоже на энтерпрайз, обнять и плакать..
Просто интересно, каким образом вот это вот может быть лучше нормально (декларативно) объявленных классов?