无法将Scala对象转换为JSON String

时间:2017-03-21 05:53:57

标签: json scala jackson

我正在使用Play Framework,我正在尝试将Scala对象转换为JSON字符串。

这是我的代码,我得到了我的对象:

val profile: Future[List[Profile]] = profiledao.getprofile(profileId);

该对象现在位于profile值。

现在我想将profile Future[List[Profile]]对象转换为JSON数据,然后将该数据转换为JSON字符串,然后写入文件。

这是我到目前为止编写的代码:

val jsondata = Json.toJson(profile)
Jackson.toJsonString(jsondata)

这是我尝试转换为JSON数据的方式,但它给了我以下输出:

{"empty":false,"traversableAgain":true}

我正在使用Jackson库进行转换。

有人可以帮我这个吗?

1 个答案:

答案 0 :(得分:2)

为什么要打扰杰克逊?如果你正在使用Play,你可以使用select * from (values (1),(2),(3)) keys(key) left join lateral ( select * from crosstab(format($$ with labels (lbl) as (values ('label2'), ('label3'), ('label4') ) select %1$s, l.lbl, t.amount from labels l left outer join t on l.lbl = t.label and t.key = %1$s order by l.lbl $$, keys.key)) as ( key integer, label2 integer, label3 integer, label4 integer ) ) i using (key) ; key | label2 | label3 | label4 -----+--------+--------+-------- 1 | 15 | 99 | 2 | 10 | | 33 3 | | | ,它使用Jackson FWIW:

首先,您需要隐式play-jsonReads知道如何序列化play-json。如果Profile是案例类,则可以执行以下操作:

Profile

如果没有,请定义自己的import play.api.libs.json._ implicit val profileFormat = Json.format[Profile] ,如this

然后,由于Reads(应遵循约定并且getprofile)返回getProfile,您可以执行此操作以获得Future[List[Profile]]

JsValue

val profilesJson = profiledao.getprofile(profileId).map(toJson) 也应为profiledao。)

最后,您可以将其包含在profileDao Result中,并从控制器返回。