on master help sign in
Make identity transparent as a key too
commitd7a4c3e504bb5794929520b8a1ba951b0731d350 authorOleg Grenrus <oleg.grenrus@iki.fi> dateThu 9 Jun 2016, 10:11 (10 years ago) parent1965e64
3 files changed+5−1
Data/Aeson/Types/FromJSON.hs+2−1 Data/Aeson/Types/ToJSON.hs+1 tests/UnitTests.hs+2
Data/Aeson/Types/FromJSON.hs+2−1
@@ -1269,7 +1269,8 @@ instance (FromJSON a) => FromJSON (Identity a) where
12691269 {-# INLINE parseJSONList #-}
12701270
12711271instance (FromJSONKey a, FromJSON a) => FromJSONKey (Identity a) where
1272− fromJSONKey = mapFromJSONKeyFunction Identity fromJSONKey
1272+ fromJSONKey = coerceFromJSONKeyFunction (fromJSONKey :: FromJSONKeyFunction a)
1273+ fromJSONKeyList = coerceFromJSONKeyFunction (fromJSONKeyList :: FromJSONKeyFunction [a])
12731274
12741275
12751276instance (FromJSON1 f, FromJSON1 g) => FromJSON1 (Compose f g) where
Data/Aeson/Types/ToJSON.hs+1
@@ -1592,6 +1592,7 @@ instance (ToJSON a) => ToJSON (Identity a) where
15921592
15931593instance (ToJSONKey a, ToJSON a) => ToJSONKey (Identity a) where
15941594 toJSONKey = contramapToJSONKeyFunction runIdentity toJSONKey
1595+ toJSONKeyList = contramapToJSONKeyFunction (map runIdentity) toJSONKeyList
15951596
15961597
15971598instance (ToJSON1 f, ToJSON1 g) => ToJSON1 (Compose f g) where
tests/UnitTests.hs+2
@@ -283,6 +283,8 @@ jsonExamples =
283283 , Example "Map Int Int" "{\"0\":1,\"2\":3}" (M.fromList [(0,1),(2,3)] :: M.Map Int Int)
284284 , Example "Map (Tagged Int Int) Int" "{\"0\":1,\"2\":3}" (M.fromList [(Tagged 0,1),(Tagged 2,3)] :: M.Map (Tagged Int Int) Int)
285285 , Example "Map [Int] Int" "[[[0],1],[[2],3]]" (M.fromList [([0],1),([2],3)] :: M.Map [Int] Int)
286+ , Example "Map [Char] Int" "{\"ab\":1,\"cd\":3}" (M.fromList [("ab",1),("cd",3)] :: M.Map [Char] Int)
287+ , Example "Map [I Char] Int" "{\"ab\":1,\"cd\":3}" (M.fromList [(map pure "ab",1),(map pure "cd",3)] :: M.Map [I Char] Int)
286288
287289 , Example "nan :: Double" "null" (Approx $ 0/0 :: Approx Double)
288290