Alle Frameworks
ANJUNAR / OPEN SOURCE

JSON Mapper

JSON-Mapping für bestehende Objektgraphen und Domänenmodelle.

01

Die Idee

Eine Scala-3-Bibliothek zum Serialisieren und Deserialisieren von Objektgraphen, auch in bereits vorhandene Instanzen. Sie unterstützt verschachtelte Graphen, strukturierte Bindung, Konverter und zusammengefasste Validierungsfehler.

02

Was es kann.

01

Aktualisierung vorhandener Objekte

JSON in ein bestehendes Domänenobjekt übernehmen, statt den ganzen Graphen zu ersetzen.

02

Verschachtelte Graphen

Beziehungen, Collections und gebräuchliche Domänenwerte abbilden.

03

Validierung

Strukturierte Fehler beim Binden eingehender Daten sammeln.

03

Installation

Zum Projekt hinzufügen
libraryDependencies += "com.anjunar" %% "json-mapper" % "1.1.3"

Paket: com.anjunar:json-mapper

04

Direkt loslegen.

json-mapper einbinden und JSON in einen neuen Typ oder einen vorhandenen Objektgraphen deserialisieren.

Ein verschachteltes Domänenobjekt

JSON-Felder werden dem annotierten DTO und seiner verschachtelten Adresse zugeordnet.

Quellcode
import com.anjunar.json.mapper.provider.DTO
import jakarta.json.bind.annotation.JsonbProperty
import scala.annotation.meta.field

class AddressDto extends DTO {
  @(JsonbProperty @field) var city: String = null
}

class UserDto extends DTO {
  @(JsonbProperty @field) var name: String = null
  @(JsonbProperty @field) var address: AddressDto = null
}

JSON in eine vorhandene Instanz übernehmen

Der Mapper aktualisiert den vorhandenen Graphen und validiert das Ergebnis; die Zielinstanz behält ihre Identität.

Quellcode
import com.anjunar.json.mapper.{EntityLoader, JsonMapper}
import com.anjunar.json.mapper.intermediate.JsonParser
import com.anjunar.scala.universe.TypeResolver
import jakarta.validation.Validation
import java.util.UUID

val user = new UserDto
user.address = new AddressDto
val validator = Validation.buildDefaultValidatorFactory().getValidator
val loader = new EntityLoader {
  override def load(id: UUID, clazz: Class[?]): Any = null
}

val updated = JsonMapper.deserialize(
  JsonParser.parse("{\"name\":\"Ada\",\"address\":{\"city\":\"Berlin\"}}"),
  user,
  TypeResolver.resolve(classOf[UserDto]),
  null, // optional EntityGraph
  loader,
  [T] => (_: Class[T]) => null.asInstanceOf[T],
  validator
).asInstanceOf[UserDto]

assert(updated eq user)
assert(user.address.city == "Berlin")
05

Bewusst gestaltet.

Das Mapping in bestehende Instanzen erhält Identität und Beziehungen bei partiellen Aktualisierungen.

Dein nächster Schritt

Mach es zu deinem Werkzeug.

Sorgfältig gebaut mit Scala JS UI.Impressum