首页 > 解决方案 > 获取数据类型中的键的最佳方法是什么?

问题描述

我需要获取给定对象中的所有键,这就是我设法做到的。

{-# LANGUAGE DeriveGeneric #-}

import System.Environment
import Data.Aeson
import Data.Foldable
import GHC.Generics
import qualified Data.HashMap.Strict as Hashmap

data Person = Person {
    name :: String,
    age::Int
} deriving (Generic,Show)

instance ToJSON Person

main=do
    let p = Person "random" 100
    let obj = decode(encode p)::Maybe Object
    case obj of
        (Just x) -> do
            let keysOfObject = Hashmap.keys x
            print keysOfObject
        _ -> print "failed to decode"

输出:["age","name"]

有没有更好(更简单)的方法来做到这一点

标签: haskell

解决方案


推荐阅读