26 lines
1,003 B
Haskell
26 lines
1,003 B
Haskell
{-
|
|
- Copyright (C) 2023 University of Luxembourg
|
|
-
|
|
- Licensed under the Apache License, Version 2.0 (the "License"); you may not
|
|
- use this file except in compliance with the License. You may obtain a copy
|
|
- of the License from the LICENSE file in this repository, or at:
|
|
-
|
|
- http://www.apache.org/licenses/LICENSE-2.0
|
|
-
|
|
- Unless required by applicable law or agreed to in writing, software
|
|
- distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
|
|
- WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
|
|
- License for the specific language governing permissions and limitations
|
|
- under the License.
|
|
-}
|
|
module AesonUtils where
|
|
|
|
import qualified Data.Aeson as A
|
|
import qualified Data.Aeson.KeyMap as KM
|
|
|
|
-- | A bit like `lodashMerge` from aeson-extra, but replaces the arrays. Right
|
|
-- argument overwrites the left one.
|
|
objMerge :: A.Value -> A.Value -> A.Value
|
|
objMerge (A.Object a) (A.Object b) = A.Object $ KM.unionWith objMerge a b
|
|
objMerge _ b = b
|