我有一个 Haskell 记录
data User = User
{ email :: Text
, token :: Text
}
我想忽略任何输入 JSON 中“令牌”的值。例如,如果输入 JSON 是
{
"email": "foo@bar.com",
"token": "abc123"
}
我希望生成的User
对象包含User { email = "foo@bar.com", token = "" }
.
我定义了以下内容:
instance FromJSON User where
parseJSON (Object v) =
User <$> v .: "email"
<*> v .:? "" .!= "" -- token
parseJSON _ = fail "Invalid User"
那么有没有更好的方法来设置token
字段的值v .:? "" .!= ""
,而忽略"token": "abc123"
JSON 中的?
我试过了
instance FromJSON User where
parseJSON (Object v) =
User <$> v .: "email"
<*> "" -- token
parseJSON _ = fail "Invalid User"
但它不会编译,因为<*> ""
需要是Parser Text
.