在我的代码中,我使用了很多newtype
声明,例如:
newtype PersonName = PersonName { personName :: Text }
newtype PetName = PetName { petName :: Text }
(实际上我使用镜头来避免访问器功能的繁琐名称。)
但是,如果我自动从ToJSON
和FromJSON
派生实例,则生成的JSON将采用以下格式:
{ "personName": "The person name" }
{ "petName": "The pet name" }
有没有办法避免为上面的ToJSON
声明FromJSON
和newtype
的琐碎实例的样板,这样生成的JSON对象将是形式:
"The person name"
"The pet name"
答案 0 :(得分:2)
使用unwrapUnaryRecords
时,我需要将选项True
设置为deriveJSON
:
import Data.Aeson
import Data.Aeson.TH
import Data.Text (Text)
newtype PersonName = PersonName { personName :: Text }
$(deriveJSON (defaultOptions { unwrapUnaryRecords = True }) ''InstallationId)
答案 1 :(得分:2)
您可以使用GeneralizedNewtypeDeriving
派生实例。
html {
height: 100% !important;
}
body, html {
position: relative !important;
}
body {
min-height: 100%;
font-family: 'Open Sans', sans-serif;
font-size: 16px;
overflow-x: hidden !important;
color: #838282;
font-family: 'Open Sans', sans-serif;
}