如何将JSON转换为Class-Scala?

安迪

有一个http响应,它是一个JSON字符串

{"id":"12345","dob":"01\/01\/1991","first_name":"Joe","gender":"male"}

哪些需要实例化到此类中

case class UserRow(id: Long, firstName: String, lastName: String, dob: Long, gender: String)

我尝试将JSON解析为地图

val result = parseFull(response)
println(result)

输出

Some(Map(dob -> 01/01/1991, id -> 12345, first_name -> Joe,  gender -> male))

试图得到

map.get("id").toString().toLong //Throws a NumberFormatException

Dob应该转换为Long类型的毫厘(EPOC)。感谢帮助

安德里亚斯·纽曼(Andreas Neumann)

基本答案您可以使用https://github.com/json4s/json4s或其他JSON-lib。并使用序列化器。

我需要调整JSON和case类的某些部分。

  1. 现在ID确实是一个数字
  2. 通过将案例类中的类型更改为Option,可以使未提供可选字段(lastName成为可选字段
  3. 名称必须完全匹配:last_name- > lastName
  4. 为了处理dob字段中的时间,您可以尝试以下扩展:

    // Joda Time隐式val格式= org.json4s.DefaultFormats ++ org.json4s.ext.JodaTimeSerializers.all

一些代码示例

import org.json4s._
import org.json4s.native.Serialization

implicit val formats = Serialization.formats(NoTypeHints)

val jsonExample = """{"id":12345,"firstName":"Joe","gender":"male"}"""

case class UserRow(id: Long, firstName: String, lastName: Option[String], dob: Option[Long], gender: String)

使用范例

scala>   Serialization.read[UserRow](jsonExample)
res5: UserRow = UserRow(12345,Joe,None,None,male)

扩展答案

提供的JSON会导致一些问题,这些问题只能使用手工制作的反序列化器https://github.com/json4s/json4s#serialization来解决

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

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

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何将JSON转换为Class-Scala?

来自分类Dev

如何将Scala Map转换为JSON字符串?

来自分类Dev

如何将Scala列表[org.bson.Document]转换为JSON字符串?

来自分类Dev

如何将嵌套的 JSON 转换为 Scala 中的映射对象

来自分类Dev

如何将Scala Array [Byte]转换为Java byte []?

来自分类Dev

Scala如何将Map转换为元组的varargs?

来自分类Dev

在Scala中,如何将FilterMonadic转换为列表?

来自分类Dev

如何将Scala JsArray转换为custorm对象

来自分类Dev

如何将HashMap转换为Scala中的子类?

来自分类Dev

如何将Scala Scales XML转换为DOM / SAX

来自分类Dev

如何将Scala Map转换为部分函数

来自分类Dev

如何将Scala RDD转换为地图

来自分类Dev

Scala如何将案例类转换为函数?

来自分类Dev

在Gatling / Scala中,如何将jsonPath转换为数组?

来自分类Dev

如何将Spark数据集转换为Scala Seq

来自分类Dev

Scala如何将Map转换为元组的varargs?

来自分类Dev

在Scala中,如何将FilterMonadic转换为列表?

来自分类Dev

如何将Scala案例类定义转换为Haskell?

来自分类Dev

(Scala)如何将List转换为Seq

来自分类Dev

如何将 Scala Seq 转换为 Java 枚举

来自分类Dev

我如何将具有混合类型值的json通过scala和json spray转换为json

来自分类Dev

我如何将具有混合类型值的json通过scala和json spray转换为json

来自分类Dev

如何使用 Scala 语言将 Spark RDD 转换为 JSON

来自分类Dev

如何将Scala嵌套映射操作转换为Scala Spark操作?

来自分类Dev

如何将Scala嵌套映射操作转换为Scala Spark操作?

来自分类Dev

SCALA:如何将Parser Combinator结果转换为Scala List [String]?

来自分类Dev

将任何Scala对象转换为JSON

来自分类Dev

将Json转换为Scala对象

来自分类Dev

将任何Scala对象转换为JSON

Related 相关文章

  1. 1

    如何将JSON转换为Class-Scala?

  2. 2

    如何将Scala Map转换为JSON字符串?

  3. 3

    如何将Scala列表[org.bson.Document]转换为JSON字符串?

  4. 4

    如何将嵌套的 JSON 转换为 Scala 中的映射对象

  5. 5

    如何将Scala Array [Byte]转换为Java byte []?

  6. 6

    Scala如何将Map转换为元组的varargs?

  7. 7

    在Scala中,如何将FilterMonadic转换为列表?

  8. 8

    如何将Scala JsArray转换为custorm对象

  9. 9

    如何将HashMap转换为Scala中的子类?

  10. 10

    如何将Scala Scales XML转换为DOM / SAX

  11. 11

    如何将Scala Map转换为部分函数

  12. 12

    如何将Scala RDD转换为地图

  13. 13

    Scala如何将案例类转换为函数?

  14. 14

    在Gatling / Scala中,如何将jsonPath转换为数组?

  15. 15

    如何将Spark数据集转换为Scala Seq

  16. 16

    Scala如何将Map转换为元组的varargs?

  17. 17

    在Scala中,如何将FilterMonadic转换为列表?

  18. 18

    如何将Scala案例类定义转换为Haskell?

  19. 19

    (Scala)如何将List转换为Seq

  20. 20

    如何将 Scala Seq 转换为 Java 枚举

  21. 21

    我如何将具有混合类型值的json通过scala和json spray转换为json

  22. 22

    我如何将具有混合类型值的json通过scala和json spray转换为json

  23. 23

    如何使用 Scala 语言将 Spark RDD 转换为 JSON

  24. 24

    如何将Scala嵌套映射操作转换为Scala Spark操作?

  25. 25

    如何将Scala嵌套映射操作转换为Scala Spark操作?

  26. 26

    SCALA:如何将Parser Combinator结果转换为Scala List [String]?

  27. 27

    将任何Scala对象转换为JSON

  28. 28

    将Json转换为Scala对象

  29. 29

    将任何Scala对象转换为JSON

热门标签

归档