我正在努力理解这一点(我对Haskell还是个新手),但是我发现Text.JSON
包的文档有点让人困惑。基本上我有这样的数据记录类型:
data Tweet = Tweet
{
from_user :: String,
to_user_id :: String,
profile_image_url :: String,
created_at :: String,
id_str :: String,
source :: String,
to_user_id_str :: String,
from_user_id_str :: String,
from_user_id :: String,
text :: String,
metadata :: String
}
我有一些JSON格式的tweet,它们符合这种类型的结构。我正在努力解决的问题是如何将上述代码映射到从以下代码返回的内容
decode tweet :: Result JSValue
转换为上述数据类型。我知道我应该创建一个instance JSON Tweet
实例,但我不知道从哪里开始。
如果您有任何建议,我们将不胜感激,谢谢!
发布于 2011-05-23 06:19:39
导入Data.JSon.Generic和Data.Data,然后将派生(数据)添加到您的记录类型,然后尝试在tweet上使用decodeJSON。
发布于 2019-07-12 16:14:41
我支持@tibbe的答案。但是,我想添加如何检查put的一些默认值,以防参数在提供的JSON中丢失。
在tibbe的回答中,您可以执行以下操作:
Tweet <$> v .: "from_user"
<*> v .:? "to_user_id" .!= "some user here"
<*> v .: "profile_image_url" .!= "url to image"
<*> v .: "created_at"
<*> v .: "id_str" != 232131
<*> v .: "source"
这将是解析JSON时要获取的dafault参数。
发布于 2013-03-14 22:53:47
下面是Text.JSON.Generic
和decodeJSON
的一个例子:http://hpaste.org/41263/parsing_json_with_textjson
https://stackoverflow.com/questions/6090599
复制相似问题