Was ist der Zweck von Format [T], wenn Sie ein Reads [T] und ein Writes [T] haben?

Tyler

Ich bin nur Stunden in der Erforschung der Play Framework (2.5.1)und ich bin verwirrt, warum Sie eine erstellen würden, Formatwenn Sie bereits definiert haben Readsund Writes. Haben Sie beim Definieren des Readsund Writesfür Ihre Klasse nicht alle Funktionen definiert, die zum Konvertieren der Klasse von und nach erforderlich sind JsValue?

Schurke-eins

Wie in der Play-Framework-Dokumentation hier erwähnt

Format [T] ist nur eine Mischung aus den Merkmalen Lesen und Schreiben und kann anstelle seiner Komponenten für die implizite Konvertierung verwendet werden.

Das Format ist eine Kombination aus Lesen [T] und Schreiben [T]. Sie können also ein einzelnes implizites Format [T] für Typ T definieren und es zum Lesen und Schreiben von Json verwenden, anstatt separate implizite Lesevorgänge [T] und Schreibvorgänge [T] für Typ T zu definieren. Wenn Sie also bereits Lesevorgänge [T] haben. und Schreibt [T], das für Ihren Typ T definiert ist, dann ist Format [T] nicht erforderlich und umgekehrt.

Ein Vorteil von Format besteht darin, dass Sie ein einzelnes implizites Format [T] für Ihren Typ T definieren können, anstatt zwei separate Lesevorgänge [T] und Schreibvorgänge [T] zu definieren, wenn beide symmetrisch sind (dh Lese- und Schreibvorgänge). Format macht Ihre JSON-Strukturdefinition also weniger repetitiv. Zum Beispiel können Sie so etwas tun

implicit val formater: Format[Data] = (
    (__ \ "id").format[Int] and
    (__ \ "name").format[String] and
    (__ \ "value").format[String]
  ) (Data.apply, unlift(Data.unapply))

An Stelle von.

implicit val dataWriter: Writes[Data] = (
    (__ \ "id").write[Int] and
    (__ \ "name").write[String] and
    (__ \ "file_type").write[String]
  ) (Data.apply)

implicit val dataWriter: Reads[Data] = (
    (__ \ "id").read[Int] and
    (__ \ "name").read[String] and
    (__ \ "file_type").read[String]
  ) (unlift(Data.unapply))

Dieser Artikel stammt aus dem Internet. Bitte geben Sie beim Nachdruck die Quelle an.

Bei Verstößen wenden Sie sich bitte [email protected] Löschen.

bearbeiten am
0

Lass mich ein paar Worte sagen

0Kommentare
LoginNach der Teilnahme an der Überprüfung

Verwandte Artikel

Was ist der Zweck von Kubernetes DaemonSet, wenn Replikationscontroller eine Knoten-Anti-Affinität haben?

Was ist beim Konvertieren eines Infix-Ausdrucks in ein Präfix mithilfe von Stapeln zu tun, wenn der gescannte und der obere Rand der Stapeloperatoren dieselbe Priorität haben?

Was ist der Zweck von Klasse und Klassengerät?

Was ist der Unterschied zwischen: t = a und t = [... a], wenn a ein Array ist?

Was ist der Zweck von git stash, wenn Sie nur ein neues Commit durchführen können?

clang: Verwenden Sie QHash<K,T> anstelle von QMap<K,T>, wenn K ein Zeiger ist

So stellen Sie das vuetify-Schubladenmenü permanent ein, wenn das Gerät ein Computer ist, und nicht permanent, wenn das Gerät mobil ist

Erkennen Sie ein angeschlossenes Gerät, wenn der Akku voll ist, mit Xamarin Android

Starten Sie eine einzelne Aktivität als Sperrbildschirm, wenn der Bildschirm ein- oder ausgeschaltet ist

So implementieren und lösen Sie ein Ereignis aus, wenn eine Änderung an einer Eigenschaft von "T" in "List <T>" innerhalb der besitzenden Klasse auftritt

So implementieren und lösen Sie ein Ereignis aus, wenn eine Änderung in einer Eigenschaft von `T` in `List<T>` innerhalb der besitzenden Klasse in Java auftritt

Sollte bei Verwendung von MVVM unter Android jede Aktivität ein (und nur ein) ViewModel haben?

Was ist der Zweck von std :: array <T, 0>?

Was ist der Zweck der Verwendung von Typparametern für ein leeres Merkmal, wenn es erweitert wird?

Minimieren Sie die Tastatur, wenn Sie in einer Aktivität ein EditText-Feld haben

So validieren Sie das JWT-Token in einem anderen Projekt, wenn Sie ein separates Projekt für die Identität mithilfe der asp.net-Identität haben

Warum ist der übliche Typ von bool und int8_t in C ++ ein int32_t?

Konvertieren Sie ein uint16_t in Bytes und umgekehrt - unabhängig von der Systemendlichkeit

Stellen Sie die Komplexität von Zeit und Geschwindigkeit ein

Animieren Sie das Ein- und Ausblenden von T in SwiftUI

Wie kann ein AVL-Baum eine Komplexität von O (log n) haben, wenn sich der Durchlauf in der Reihenfolge zweimal rekursiv aufruft? Ist das nicht O (2 ^ n)?

Warum ist nullptr ein Teil der Kernsprache, aber nullptr_t ist ein Teil von STL?

Sie möchten Daten in der lokalen Datenbank speichern, wenn das Gerät offline ist, und von der Datenbank abrufen, wenn sie online ist, und an den Server senden

Wenn ein Mikroprozessor und ein Bus unterschiedliche Bitsysteme haben, ist der Buszyklus des Mikroprozessorsystems (Fortsetzung)

Wenn ein Computer mit einer Anweisung vollständig sein kann, was ist der Zweck, viele Anweisungen zu haben?

Navigationskomponente: Übergeben Sie safeArgs von der Aktivität an ein Fragment

Was ist der Zweck von Text, dem in Kommentaren ein @ vorangestellt ist?

Was ist der Zweck, wenn ein Verbraucher einen Anbieter erbringt?

Der Versuch, get () von Java Vector so zu ändern, dass ein neues T () erstellt wird, wenn das Element null ist

TOP Liste

  1. 1

    Hangfire funktioniert nicht wie erwartet mit ASP.NET Core 3.1

  2. 2

    Konvertiert nicht von Methodengruppe in Func <int>

  3. 3

    Wie berechnet man den Gesamtpreis einer Bestellung mit Rails?

  4. 4

    Identifizieren Sie die Werte der ersten Spalte pro ID und arbeiten Sie basierend auf diesem Wert

  5. 5

    Konvertieren Sie eine Textdatei mit mehreren Trennzeichen in CSV

  6. 6

    So greifen Sie auf eine Variable in einer Singleton-Klasse zu, die von einem Modul in Play 2.5 Scala verwendet wird

  7. 7

    So aktualisieren oder aktualisieren Sie alle Fragmente vom Viewpager Android

  8. 8

    Wie implementiere ich die "equals" -Methode für Generika mit "instanceof"?

  9. 9

    Probleme beim numerischen Integrieren einer multivariablen Funktion WRT einer einzelnen Variablen in Julia (mit hcubature)

  10. 10

    Was ist die idiomatischste Rust-Methode, um ein optionales Element eines Vec bedingt zu ändern?

  11. 11

    Printf gibt Zeichen aus, die über die angegebene Länge des Arrays hinausgehen

  12. 12

    So installieren Sie ein privates NPM-Paket über SSH

  13. 13

    findOneAndUpdate mit Push-Array-Elementen gibt Fehler im Mungo

  14. 14

    So verschieben Sie ein Bild in Flutter/Dart mit einem Draggable

  15. 15

    Verwendung eines Winkelmessers für Leistungstests

  16. 16

    Wie erstelle ich ein Objekt für ein Django-Modell mit vielen zu vielen Feldern?

  17. 17

    Beziehungen auf zusammengesetzten Schlüsseln mit sqlalchemy

  18. 18

    c # itextsharp absolute Textposition mehrzeilig

  19. 19

    Wie kann ich eine verschachtelte Schleife mit lapply in R ersetzen?

  20. 20

    Sind die folgenden 3 Möglichkeiten, Objekte zu definieren, identisch?

  21. 21

    Wie konvertiere ich einen Vektor von Bytes (u8) in eine Zeichenfolge?

heißlabel

Archiv