Я использую рекомендованный Aeson пакет, но мне нужно разобрать целые числа. Я хотел бы сделать что-то вроде:Как разобрать целое число с Aeson
decode "5" :: Maybe Int
и захватить результат, но как документация объясняет (http://hackage.haskell.org/package/aeson-0.8.0.0/docs/Data-Aeson.html), эсон не поддерживает разбор простых типов (блестящая идея!):
>>> decode (encode (1 :: Int)) :: Maybe Int
Nothing
Вы ссылаетесь на использование парсера значений, а не на синтаксический анализатор json, но нет указаний на то, как на самом деле использовать этот парсер. Если вы посмотрите на источник для декодирования, вы увидите, что внутри Aeson имеет параметр decodeWith, который принимает парсер, но это скрыто от вас. Кажется, что импорт Data.Attoparsec и работающий parse value "5"
могут работать, но мне также трудно получить значимые результаты.
@singular Извините, что см. Мои правки. В принципе, вы можете использовать 'Data.Attoparsec.parseOnly' с' значением' для разбора произвольного JSON, но вы не получите столько тонкостей, как предусмотрено в 'decode'. – bheklilr
Ах, похоже, parseOnly сделает трюк. – RussellStewart