Lasst uns sagen, dass ich einen Typ haben Person
Aeson und Lens mit DeriveGeneric und makeLenses - Namen Linie nicht bis
import GHC.Generics
import Data.Text
import Data.Aeson
import Control.Lens
data Person = Person {
_firstName :: Text,
_lastName :: Text,
_age :: Int
} deriving (Show, Generic)
Und ich möchte automatisch ableiten Objektive und JSON typeclasses es
makeLenses ''Person
instance FromJSON Person
instance ToJSON Person
Das funktioniert korrekt, aber DeriveGeneric sieht meine Feldnamen mit einem Unterstrich und erwartet, dass mein JSON entsprechend formatiert ist.
{ "_firstName": "James" ... etc} -- The underscore doesn't belong here.
Offensichtlich kann ich den Unterstrich vom data
Definition selbst entfernen, aber dann makeLenses
nicht in der Lage sein, die erforderlichen Getter und Setter abzuleiten.
Im Idealfall, was ich möchte in der Lage sein zu tun, so etwas wie diese
let person = decode blob
let name = person ^. firstName
dh ich mag in der Lage sein, Linsen und JSON Instanzen abzuleiten mit allen Feldnamen korrekt mit den Werten in den JSON- Schlange REST Api Ich verzehre, ohne viel Text schreiben zu müssen.
Das scheint so eine direkte Sache zu sein, dass ich fühle, dass ich etwas Offensichtliches vermisse?
Funktioniert perfekt, danke :) –