Haskell 如何使用镜头重命名JSON对象中的键?
我正在努力使用函数和函数来将Haskell 如何使用镜头重命名JSON对象中的键?,haskell,haskell-lens,Haskell,Haskell Lens,我正在努力使用函数和函数来将{“foo”:“abc”}更改为{“bar”:“abc”} 注:我正在使用微透镜系列的包装,如果这有什么区别的话。在和键透镜用于更改地图状物体的值。如果要更改密钥,请使用旧密钥的值设置新密钥并删除旧密钥。我现在无法访问编译器,因此此代码可能无法编译: -- I think `at` can be substitute by `key` if your types allow it -- |
{“foo”:“abc”}
更改为{“bar”:“abc”}
注:我正在使用
微透镜
系列的包装,如果这有什么区别的话。在和键
透镜用于更改地图状物体的值。如果要更改密钥,请使用旧密钥的值设置新密钥并删除旧密钥。我现在无法访问编译器,因此此代码可能无法编译:
-- I think `at` can be substitute by `key` if your types allow it
-- |- sets the new key to the old value
-- | |- deletes the old key
updateKey oldKey newKey myjson = myjson & at newKey .~ v & at oldKey .~ Nothing
where v = myjson ^. at oldKey
似乎不起作用(undefined::Aeson.Value)&at“mKey”~没有任何内容给出以下错误没有(Lens.Micro.Internal.at Value)的实例@SaurabhNanda抱歉,你到底想做什么Aeson.Value
是一个json值,不是一对key:Value
,显然,没有key就不能查询单个值。如果Aeson.Value包含一个Aeson.Object,那么我想重命名一个key。@SaurabhNanda尝试这两个(未定义的::Aeson.Object)&在“mKey”~没有任何内容和(未定义::Lens.Micro.Type.transversal'Aeson.Value Aeson.Value)&键“mKey”。~无任何内容