2017-10-26 2 views
0

Ist es möglich, die zugrunde liegende hlist-Darstellung aus circe anstelle von JSON zu erhalten? Im Wesentlichen eine Fallklasse in einen HList konvertierenHolen Sie das zugrunde liegende HList aus Circe

Hinweis: Ich bin mir bewusst, dass dies direkt mit formlos erreicht werden kann, möchte ich versuchen, circe's Makro Parser, wie ich in Leistungsprobleme mit formlos lief.

Antwort

1

Warum denken Sie, dass es eine "zugrunde liegende hlist-Repräsentation aus circe" gibt?

Was circe tut, ist parsing ein String in JSON, Typklassen Einführung Decoder und Encoder

trait Encoder[A] extends Serializable { self => 
    def apply(a: A): Json 
//... 
} 

trait Decoder[A] extends Serializable { self => 
    def apply(c: HCursor): Decoder.Result[A] 
//... 
} 

und deriving diese Klassen Typ shapeless verwenden. Zum Beispiel bedeutet dies, dass wenn wir Decoder[H] und Decoder[T] haben, dann haben wir Decoder[H :: T]. Aber es gibt keine zugrunde liegende circe Darstellung für eine andere Fallklasse als Json.

circe konvertiert keine Fallklasse in eine HList, shapeless tut.

+0

Ok, danke. Ich dachte, es würde hlist als eine Zwischenrepräsentation benutzen. – jamborta

Verwandte Themen