[Haskell-beginners] capital letter name in record syntax (parsing json)
Karl Voelker
ktvoelker at gmail.com
Thu Oct 17 04:24:18 UTC 2013
On Wed, Oct 16, 2013 at 2:18 PM, Miro Karpis <miroslav.karpis at gmail.com>wrote:
> Hi, please,...is it possible to use a capital letter in record syntax data
> definition? For example
>
> data Car =
> Car { CarName :: !Text
> ,CarColor :: !Text
> } deriving (Show,Generic)
>
> When I try this I get: parse error on input `CarName'
>
Record field names cannot start with a capital letter. Haskell uses the
case of the first letter of a name to classify it: variables start with a
lowercase letter; constructors start with an uppercase letter.
> The thing is that I'm trying to parse a json file (with Aeson package)
> that has records starting with capital letter. After that I would like to
> parse the JSON file with following code:
>
> d <- (eitherDecode <$> getJSON) :: IO (Either String [Car])
>
> where getJSON gets the json file from url
>
> If not, what alternative do I have?
>
If you generate your aeson instances with Data.Aeson.TH.deriveJSON, note
that the first parameter to deriveJSON is a function which lets you alter
the names. That should enable you to craft a workaround.
-Karl
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://www.haskell.org/pipermail/beginners/attachments/20131016/2a35dd1d/attachment.html>
More information about the Beginners
mailing list