如何在scalatra中返回自定义json

时间:2017-05-21 16:22:34

标签: json scala scalatra scalatra-sbt

Scalatra代码:

import org.scalatra._
import org.json4s.{DefaultFormats, Formats}
import org.scalatra.json._


class AppServlet extends AppStack with JacksonJsonSupport{
  protected implicit lazy val jsonFormats: Formats = DefaultFormats

  private def generateJSON():((String, String),(String, String)) = {
    val json = ("Firstname" -> "joe", "LastName" -> "cole")
    json
  }

  before() {
    contentType = formats("json")
  }

  get("/") {
    generateJSON
  }
}

我试图使用scalatra框架返回简单的json,输出类似于{"_1":{"Firstname":"joe"},"_2":{"LastName":"cole"}}。我不需要打印_1或_2。请注意我不是要回复任何物品。我只需要制作自己的json然后返回它。它与任何数据模型都没有关联。任何帮助表示赞赏。

2 个答案:

答案 0 :(得分:1)

你创造的是(String, String)的元组,输出就是这样并不奇怪。您应该创建一个案例类,或者,因为您使用json4s,请返回:

// don't forget this:
// import org.json4s.JsonDSL._
("Firstname" -> "joe") ~ ("LastName" -> "cole")

答案 1 :(得分:0)

import org.scalatra._
import org.json4s.{DefaultFormats, Formats}
import org.scalatra.json._
import org.json4s._
import org.json4s.JsonDSL._

class AppServlet extends AppStack with JacksonJsonSupport{
  protected implicit lazy val jsonFormats: Formats = DefaultFormats

  private def generateJSON():JObject = {
    val json = ("Firstname" -> "joe") ~ ("LastName" -> "cole")
    json
  }

  get("/") {
    generateJSON
  }
}