【问题标题】:Scala object to json string using lift-json使用lift-json的Scala对象到json字符串
【发布时间】:2015-10-15 23:35:35
【问题描述】:

我有一个像

这样的 scala 类
class metrics{
  private var _moduleId: String = ""
  private var _blah1: String = ""
  private var _metadata: Map[String, String] = Map()

  def moduleId: String = _moduleId

  def moduleId_(value: String): Unit = {
    _moduleId = value
  }

  def blah1: String = _blah1

  def blah1_(value: String): Unit = {
    _blah1 = value
  }

  def metadata: Map[String, String] = _metadata

  def metadata_(value: Map[String, String]): Unit = {
    _metadata = value
  }

}

如何使用 lift-json lib 将如下的指标对象转换为 json 字符串。

val coda = new metrics()
    coda.blah1_("blah1")
    coda.moduleId_("module1")
    coda.metadata_(Map("p1"->"Alice","p2"->"Bob"))

当我尝试这样 val json = Extraction.decompose(coda) 时,我得到一个空的 json {}。任何有关如何从 scala pojo 转换为 json 的见解都会有所帮助。

【问题讨论】:

    标签: json scala lift-json


    【解决方案1】:

    decompose 的文档说:

    将案例类分解为 JSON

    你所拥有的不是案例类。案例类是 scala 中的“pojo”。您无需编写所有样板文件。

    case class Metrics(moduleId: String = "", blah1: String = "", metadata: Map[String, String] = Map())
    
    val coda = Metrics(
      blah1 = "blah1",
      moduleId = "module1",
      metadata = Map("p1"->"Alice","p2"->"Bob"))
    
    val json = Extraction.decompose(coda)
    

    【讨论】:

      最近更新 更多