我正在编写一些代码,用于自动生成Elm数据结构的JSON编解码器。在我的代码中,有一个“子结构/子类型”,已经被编码成了
以下是一些示例代码:
Json.Encode.Value
,我需要向其添加另一个键值对。在Elm中是否有任何方法可以“解构”Json.Encode.Value
?或者将两个类型为Json.Encode.Value
的值合并?以下是一些示例代码:
type alias Entity record =
{ entityKey: (Key record)
, entityVal: record
}
jsonEncEntity : (record -> Value) -> Entity record -> Value
jsonEncEntity localEncoder_record val =
let
encodedRecord = localEncoder_record val.entityVal
in
-- NOTE: the following line won't compile, but this is essentially
-- what I'm looking for
Json.combine encodedRecord (Json.Encode.object [ ( "id", jsonEncKey val.entityKey ) ] )
Json.Encode.Value
是一个不透明/黑盒(https://en.wikipedia.org/wiki/Opaque_data_type)数据类型。因此,它不适合被解构。通过重新设计你的应用程序来避免这个需求,可以省去很多麻烦。 - undefined