播放scalaJson如何在查询值时检索记录

时间:2015-05-27 17:59:51

标签: json scala playframework-2.0

所以我在使用Play的scalaJSON时遇到了一些问题。首先是因为我无论如何都不能使我的键除了字符串以外的任何东西。我已经定义了一个JSONWrites转换器,如下所示:

implicit val musics = new Writes[Question] {
      def writes(question:Question) = Json.obj(
        "questionID" -> question.questionID,
        "questionText" -> question.questionText,
        "responseURI" -> question.responseURI,
        "constraints: min,max,Optional" -> Json.arr(question.minResponse, question.maxResponse, question.optionalQ),
        "responseDataType" -> question.responseDataType
      )
    }

我的问题模型案例类:

case class Question (questionID:Int,
                      questionText:String,
                      responseURI:String,
                      minResponse:Option[Int],
                      maxResponse:Option[Int],
                      optionalQ:Boolean,
                      responseDataType:String)

在设计我的REST API时,我想通过/questionBlock/questionID

等网址访问此调查应用的具体问题

我试图简单地将问题.questionID作为父键并将其余的JSON嵌套为此键的值,但它不允许我这样做,说expected String actual Int

渲染出来的实际JSON如下所示:

  [{"questionID":0,"questionText":"What is your favorite musical artist?",
"responseURI":"/notDoneYet","constraints: min,max,Optional":[1,1,false],
"responseDataType":"String"},{"questionID":1,"questionText":"What is your favorite music genre?",
"responseURI":"/notDoneYet","constraints: min,max,Optional":[1,1,false],"responseDataType":"String"}]

但是使用这个我似乎无法弄清楚如何返回questionID等于1或2等的整个字段。我使用了数组的第0个,第1个等元素,但这对我来说不是理想的方法,因为对于特定的问题序列,问题Ids可能并不总是从0开始。

基本上,当我提供questionID的值时,我希望能够显示一个问题的完整记录。在Javascript中我会将最外面的键设为这个questionID值,但是我无法弄清楚如何使用scalaJson来做到这一点。如果有另一种方法可以实现这一目标,我愿意接受建议。

0 个答案:

没有答案