如何显示来自 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")
),并在您的应用程序中处理不透明值。
我正在尝试从 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")
),并在您的应用程序中处理不透明值。