@mauve so while I generally agree, have you had any experience with the Haskell json libraries? Aeson in particular has some applicative interfaces that make some of this a little bit less painful:
instance FromJSON Person where
parseJSON = withObject "Person" $ \v -> Person
<$> v .: "name"
<*> v .: "age"
@quinn this still requires knowing the fields at compile time right?