如何显示来自 Scala 控制器 class 的正确 json 响应?

How to show proper json response from Scala controller class?

我正在尝试从 Postgresql 数据库 (v9.5) table 获取 json 响应以显示在我的视图页面上,我尝试了以下操作,因为我的应用程序执行正常,但是我不是 getting/displaying 我需要的正确 json 数据(因为它包含:Stream、斜线()和问号(?),如 Stream 类型 json)。请让我知道如何显示我想要的输出,如下所示? 我的输出:

Stream("[{\"_testid\":{\"testid0\":\"testnumber\"},\"testtitle\":\"TestTitle\"}]", ?)

但我想要的输出:

[{"_testid":{"testid0":"testnumber"},"testtitle":"TestTitle"}]

控制器:

class Test extends Controller {
    def getTest = Action { 
    var sql: SqlQuery = SQL("select name::TEXT from test");
    def values: String =  DB.withConnection { implicit connection => 
    sql().map(row => row[String]("name")).toString
    }
    Ok(values)
    }

table:

create table test(
    id serial primary key,
    name json not null);

如文档中所示,Anorm 随 column parsers 用于 JDBC 标准类型。

PostgreSQL JSON 类型不是其中之一。这是供应商特定类型。

您可以在语句中处理此特定转换,方法是在通过 JDBC 之前将 SQL 列转换为 TEXT(作为普通的 JDBC 字符串所以)。

SELECT json_col::TEXT FROM test

您可以实现自定义 Column[JsValue](参见文档),将特定于 PostgreSQL JDBC 驱动程序的 PGObject 转换为 Play JsValue.

您可以将列映射为 anorm.Object (SqlParser.get[anorm.Object]("col")),并在您的应用程序中处理不透明值。