如何使用Circe删除对象列表中的空值

扬·斯瓦特

我正在尝试使用Circe编码对象列表,类似于以下内容:

val test = Seq(MyObject("hello", None, 1, 2, None)

我正在尝试使用Circe对此进行解析:

test.asJson

但这会创建JSON对象:

[
  {
    name: "hello",
    someVal: null,
    someNum: 1,
    anotherNum: 2,
    anotherVal: null
  }
]

我试着运行asJson.dropNullValues,但似乎并没有访问对象内的空值。有没有办法将空值放在对象内部?

我期待更多类似这样的东西:

[
  {
    name: "hello",
    someNum: 1,
    anotherNum: 2
  }
]
伊娃·金

你看field: null,因为瑟茜轮流Option[T]t.asJsonSome[T]JsonNullNone,而默认情况下类编码器只是将所有字段的JsonObject以circe编码密封特质家族的方式,它可以使用这些null字段来区分类似

sealed trait Foo
case class Bar(a: Option[String])
case class Baz(a: Option[String], b: Option[String])

因此,如果您真的想删除此信息并需要信息丢失的单向转换,则可以将结果映射Json为使用以下代码删除所有空字段:


implicit val fooEnc: Encoder[Foo] = deriveEncoder[Foo].mapJsonObject{jsonObj => jsonObj.filter{case (k,v) => !v.isNull}}

但是,您应该为要删除空字段的任何类编写此类自定义编解码器。要对json进行后处理,您可以对结果json使用fold:

  val json: Json = ???
  json.fold[Json](
    Json.Null,
    Json.fromBoolean,
    {_.asJson},
    {_.asJson},
    {_.asJson},
    {jsonObj => jsonObj.filter{case (k,v) => !v.isNull}.asJson}
  )

或实施自定义文件夹。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何使用lodash从对象中删除空值

来自分类Dev

如何使用lodash从对象中删除空值

来自分类Dev

如何从列表中删除某些值的对象?

来自分类Dev

如何按值从列表中删除对象

来自分类Dev

从数组列表中删除对象会留下空值

来自分类Dev

如何删除json对象数组中的空值

来自分类Dev

从列表内的列表中删除空值

来自分类Dev

如何检查空列表是否在列表内的字典内并从列表中删除该字典对象?

来自分类Dev

从列表中删除空的Counter()对象

来自分类Dev

如何使对象从列表中删除。

来自分类Dev

空值未从列表中删除

来自分类Dev

如何从列表内的列表中删除对象?

来自分类Dev

如何从对象列表中删除几个对象

来自分类Dev

如何使用Python从列表中顺序删除对象

来自分类Dev

如何使用函数实例化空对象中的值

来自分类Dev

如何从数组中删除空对象?

来自分类Dev

如何从任何对象属性为null或为空的列表中删除All?

来自分类Dev

如何在TypeScript中删除对象数组中具有空值的键?

来自分类Dev

当数据框中的值为空时,如何删除json对象中的元素?

来自分类Dev

如何使用AssertThat检查列表中对象的属性值?

来自分类Dev

如何使列表中的每个对象为空

来自分类Dev

如何使用 Circe 解析对象数组

来自分类Dev

Swift:如何从字典中删除空值?

来自分类Dev

如何从多维数组中删除空值

来自分类Dev

如何从数组中删除空值?

来自分类Dev

如何删除多维数组中的空值?

来自分类Dev

如何从对象列表项中删除填充?

来自分类Dev

如何从对象列表中删除重复项

来自分类Dev

如何从列表/数组中删除对象属性?

Related 相关文章

热门标签

归档