从数据库面临错误检索字符串到json

时间:2013-08-06 07:11:10

标签: java json web-services scala playframework

我是新玩框架工作以及scala语言,我想要将我的arraylist转换为json,在java中我首先将值存储到列表中,然后将列表转换为json,如此{{1 }}

通过这段代码我实现了相同的但当我在scala中尝试相同的方法时,它不起作用:代码是public static Result getJson(){ List<Task> abc = Task.all(); return ok(toJson(abc)); },我面临错误::

找不到类型为List [models.Task]的Json反序列化器。尝试为此类型实现隐式Writes或Format。

有人给我解决方案。

5 个答案:

答案 0 :(得分:1)

我找到了解决方案。

在模型类中定义隐式编写器。

implicit val implicitTaskWrites = new Writes[Task] {
def writes(taskobj: Task): JsValue = {
  Json.obj(
    "id" -> taskobj.id,
    "label" -> taskobj.label
  ) 
} 

}

这会将每个Task(我的模型类)对象转换为JsValue对象。 然后

   def parse(list :List[Task]) :String ={

     var json=new JsArray()
     for(task:Task <- list ){
        json=json.append(Json.toJson( task ) )
     }

     json.toString()
 }

也添加此代码。

然后如果你调用parse(list),可以得到json字符串。

答案 1 :(得分:0)

你能把你的观点文件发给我们吗?

您是否尝试在scala.List文件中提取.scala.html参数,而不仅仅是List

编辑:为什么要将JSON发送到您的视图?你不应该直接返回Json(Ok(JsArray(jsonValue)))或在你的视图中使用你的列表吗?

答案 2 :(得分:0)

您必须在display.scala.html中提供参数 @(jsonTasks:play.api.libs.json.JsValue)

答案 3 :(得分:0)

您可以在库play.libs.Json中使用toJSon方法 步:   第一:       import play.libs.Json;

然后使用

  ok(JSon.toJson(list));

显示已转换的json。

答案 4 :(得分:0)

我得到了结果,但采用了不同的方法..

我使用了key,value map`val results = SQL(“SELECT * FROM exercise”)的方法.apply()

var a:Int = 0  for(a&lt; -0 to results.length-1)  {val jsonrec = Json.obj(“id” - &gt; results(a)Long,“label” - &gt; results(a)String     )  output.add(jsonrec)     }” ...

但如果我用我使用的方法得到答案并发布问题可能会更好。