我试图从Postgresql数据库(v9.5)表中获取json响应以显示在我的视图页面上,我已经尝试了以下内容,因为我的应用程序执行正常,但我没有得到/显示我所需的正确json数据(因为它包含:Stream,slashes()和问号(?),如Stream类型json)。请让我知道如何显示我想要的输出如下? 我的输出:
Stream("[{\"_testid\":{\"testid0\":\"testnumber\"},\"testtitle\":\"TestTitle\"}]", ?)
但是我想要的输出:
[{"_testid":{"testid0":"testnumber"},"testtitle":"TestTitle"}]
contorller:
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)
}
表:
create table test(
id serial primary key,
name json not null);
答案 0 :(得分:1)
如文档中所示,Anorm附带了column parsers的JDBC标准类型。
PostgreSQL JSON类型不是其中之一。它是特定于供应商的类型。
您可以在语句中处理此特定转换,方法是在执行JDBC之前将SQL列强制转换为TEXT
(如同简单的JDBC String一样)。
SELECT json_col::TEXT FROM test
您可以实现自定义Column[JsValue]
(请参阅文档),将特定于PostgreSQL JDBC驱动程序的PGObject
转换为Play JsValue
。
您可以将列映射为anorm.Object
(SqlParser.get[anorm.Object]("col")
),并处理应用程序中的不透明值。