私は 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"
JSONの値を無視して、token
フィールドの値を設定するより良い方法はありますか?v .:? "" .!= ""
"token": "abc123"
私は試した
instance FromJSON User where
parseJSON (Object v) =
User <$> v .: "email"
<*> "" -- token
parseJSON _ = fail "Invalid User"
<*> ""
しかし、 は である必要があるため、コンパイルされませんParser Text
。