解析JSON帖子

Dan*_*iel 3 yesod

我有以下代码:

data Friend = Friend
              { friend_name :: Text
              , friend_inTwitter :: Bool
              , friend_twitterName :: Maybe Text
              }
$(deriveJSON (drop 6) ''Friend)
Run Code Online (Sandbox Code Playgroud)

这段JSON被发布到处理程序中,我很难获取它。我尝试了不同的方法,但让我将其中之一放在此处以产生建议:

postTestR :: Handler RepPlain
postTestR = do
value <- parseJsonBody_
return $ RepPlain $ friend_name value
Run Code Online (Sandbox Code Playgroud)

那是行不通的,我可以看到类型不匹配,但是我不确定用什么替换它。我还想看看如何解析以JSON形式发布的列表好友。

谢谢!

Dan*_*iel 5

好吧,事实证明,我需要在其中添加一个“ toContent”调用以将“文本”转换为“内容”。这是一段有效的代码:

data Person = Person
              { person_firstName :: Text
              , person_lastName :: Text
              , person_fullName :: Text
              , person_friends :: [Friend]
              }

data Friend = Friend
              { friend_name :: Text
              , friend_inTwitter :: Bool
              , friend_twitterName :: Text
              }


$(deriveJSON (drop 7) ''Person)              
$(deriveJSON (drop 7) ''Friend)   


postKnockoutR :: Handler RepPlain
postKnockoutR = do
  value <- parseJsonBody_
  let (f:fs) = person_friends value
  return $ RepPlain $ toContent $ friend_name f
Run Code Online (Sandbox Code Playgroud)