如何在 scalatra 中 return 自定义 json

how to return custom json in scalatra

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 框架 return 简单 json,输出是这样的 {"_1":{"Firstname":"joe"},"_2":{"LastName":"cole"}}。我不需要打印 _1 或 _2。请注意,我并不是要 return 任何对象。我只需要制作自己的 json 然后 return 即可。它不与任何数据模型关联。感谢任何帮助。

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

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

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
  }
}