我按照文档尝试:
let st = do result <- decode "{\"name\":\"Dave\",\"age\":2}" --bss
flip parseMaybe result $ \obj -> do
name <- obj .: "name"
return name
我明白了:
使用
.:' In a stmt of a 'do' block: name <- obj .: "name" In the expression: do { name <- obj .: "name"; return name } In the second argument of
($)'产生的(FromJSON b0)没有实例,即`\ obj - &GT; do {name&lt; - obj。:“name”; 返回名称}'
怎么做得好?我做错了什么?
答案 0 :(得分:1)
FromJSON b0
表示此时类型不固定。但是,如果你修改了类型,例如String
,它就会起作用:
let st = do result <- decode "{\"name\":\"Dave\",\"age\":2}"
flip parseMaybe result $ \obj -> do
name <- obj .: "name"
return (name :: String)