我是新玩框架工作以及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。
有人给我解决方案。
答案 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) }” ...
但如果我用我使用的方法得到答案并发布问题可能会更好。