- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个类型
{-# LANGUAGE DeriveGeneric #-}
{-# LANGUAGE TemplateHaskell #-}
{-# LANGUAGE MultiWayIf #-}
import GHC.Generics
import Data.Aeson.TH
import Data.Aeson.Types
data MyJSONObject = MyJSONObject
{ name :: String
, ptype :: Maybe String
, pid :: Maybe String
, subject :: Maybe String
, message :: Maybe String
} deriving (Show, Generic)
Maybe String
字段。我的
FromJSON
和
ToJSON
由
TemplateHaskell
提供功能
$(deriveJSON defaultOptions
{
omitNothingFields = True
, fieldLabelModifier = \f -> if
| f == "ptype" -> "type" -- reserved keyword
| f == "pid" -> "id" -- Prelude function name
| otherwise -> f
} ''MyJSONObject)
subject
完全没问题不存在于 JSON 文档中,但如果确实存在,则其值不能为 null。我的期望是
omitNothingFields
将处理此要求,但情况似乎并非如此:
decode
d JSON 仍然有
Nothing
不存在的字段的值,以及
encode
d JSON 有
null
这些字段的值。前一种情况很好;后一种情况不是,因此是问题所在。
omitNothingFields
的目的? ?如何忽略带有
Nothing
的字段/
null
值(value)观?
最佳答案
为我工作。尝试使用泛型派生而不是 TH。也许就是这样做的。
*Main Data.Aeson> decode "{\"name\":\"str\"}" :: Maybe MyJSONObject
Just (MyJSONObject {name = "str", ptype = Nothing, pid = Nothing, subject = Nothing, message = Nothing})
*Main Data.Aeson> encode (MyJSONObject "str" Nothing Nothing Nothing Nothing)
"{\"name\":\"str\"}"
{-# LANGUAGE DeriveGeneric #-}
import GHC.Generics
import Data.Aeson
import Data.Aeson.Types
data MyJSONObject = MyJSONObject
{ name :: String
, ptype :: Maybe String
, pid :: Maybe String
, subject :: Maybe String
, message :: Maybe String
} deriving (Show, Generic)
instance ToJSON MyJSONObject where
toJSON = genericToJSON defaultOptions
{ omitNothingFields = True }
instance FromJSON MyJSONObject where
parseJSON = genericParseJSON defaultOptions
{ omitNothingFields = True }
aeson-1.1.2.0
.
关于haskell - 在 Haskell 的 Aeson 中省略 Nothing/null 字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47100569/
如果我有 JSON我尝试推导出 FromJSON实例自动使用 Generics ,我遇到了 id 的问题存在于 JSON 中的多个位置. 有没有办法让我只覆盖 id部分还是我必须编写整个实例才能更改这
如何声明以下数据类型的 FromJSON 实例: data Privacy = Everyone | AllFriends | FriendsOfFrien
我有这样的数据类型: data A = A T.Text deriving (Generic, Show) instance A.ToJSON A 如果我对它使用A.encode: A.encode
如果不是Nothing,我试图返回一个JSON数据表示,如果Nothing则返回一个空的JSON对象; 我知道我可以做到: encode () -- "[]" 但现在我想要一个空对象( "{}" )。
我有一个(有效)json 编码数组,其中数据丢失或格式错误。我希望 Aeson 将其转换为 Maybe [Maybe Point] 并具有 Nothing,其中数组元素不是有效的 Point。 imp
我需要解析一个具有字符串元素的对象,其中字符串本身是一个字符串化对象: { "a" : "apples", "bar" : "{\"b\":\"bananas\"}" } 我想将其解析为
我正在尝试解析 JSON 以生成具有多个构造函数的类型。挑战在于该类型以包含所需数据的键的名称进行编码。理论上,我可以使用一堆 .:? 调用,然后检查给定的键是否返回 Just 但我认为必须有更好的方
我有一个格式为的 JSON 请求 {"command":"get","params":{"something":"something else"}} 以及来自 Yesod book 的代码片段 {-#
我需要解析没有严格结构的 json API 响应: { response: { /* any object here */ } } 如何编写 parseResponse 来保留解析(或为其选择解析器
假设有一个像这样的 JSON: { "bob_id" : { "name": "bob", "age" : 20 }, "jack_id" : { "name":
函数 decode 和 decode' 来自 aeson 包装几乎相同。但是它们在文档中描述了细微的差异(在此处仅发布文档的有趣部分): -- This function parses immedia
例如,我有多个构造函数的数据类型 data AB = A { ab :: Text , a :: Text } | B { ab :: Text , b ::
我正在尝试使用 aeson 来解析 api 返回的 json。使用 wreq 从 api 端点获取响应。在此字符串上运行 eitherDecode 时,我得到: Left "Failed readin
我所说的“历史数据”只是指日期作为键,当天的值作为值。 例如,政府机构或大学的研究部门经常以这种格式编制有关地震、降雨、市场变动等的日期 { "Meta Data": {
我有一个复杂的嵌套 json,我正在尝试使用 Aeson 和 Attoparsec 将其解析为我的自定义类型。基于问题的信息:Haskell, Aeson & JSON parsing into cu
我想解析一个 JSON 对象并使用给定的 name 创建一个 JSONEvent和 args 我正在使用 Aeson,现在我坚持转换 "args":[{"a": "b"}]到 [(String, St
我想使用酸商店存储 aeson Values。我采用了最小的酸实现,并试图天真地将类型切换到值。这些是我对 derivedSafeCopy 的调用: $(deriveSafeCopy 0 'base
aeson似乎在解析 JSON 时采取了一种有点简单的方法:它将顶级 JSON 值(对象或数组)解析为自己的固定表示,然后提供帮助用户将该表示转换为自己的表示的工具。当 JSON 对象和数组很小时,这
假设我要实现 FromJSON对于数据类型。以下是完整的源代码: {-# LANGUAGE NamedFieldPuns , OverloadedStrings , TupleSect
我有以下问题,我有一个带有可选键的 JSON 格式,我需要从我的 haskell 代码生成。 让我们举个例子 {-# LANGUAGE DeriveGeneric #-} import GHC.Gen
我是一名优秀的程序员,十分优秀!