2016-02-25 36 views
0

我想从我的视图页面显示Postgresql数据库(v9.5)表格得到json响应,我尝试了以下内容,因为我的应用程序执行正常,但我没有获取/显示我所需的正确json数据(因为它包含:Stream,斜杠()和问号(?),如Stream类型的json)。请让我知道如何显示我想要的输出如下? 我的输出:如何从Scala控制器类显示正确的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

可能的重复[如何编写Scala控制器类来返回JSON响应?](http://stackoverflow.com/questions/35597942/how-to-write-scala-controller-class-to-return-json-响应) – cchantep

+0

这将是很好,你一直在讨论同一个问题,而不是每天在同一问题上创建4个问题。我也建议你看看之前的文档。 – cchantep

+0

@cchantep,是的,当然,我会尽量保持只有一个查询帖子。谢谢。 – Dhana

回答

1

如文档中表示,ANORM自带针对JDBC标准类型的。

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

你可以在语句中处理这个特定的转换,通过将SQL列转换为TEXT,然后再通过JDBC(如普通的JDBC String那样)。

SELECT json_col::TEXT FROM test 

可以实现自定义Column[JsValue](见文档),该转换PGObject具体到PostgreSQL JDBC驱动成剧本JsValue

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

+0

感谢您的回复,我使用的是Play 2.2.x,因为我无法在anorm上看到任何列解析器的文档,并且我能知道如何在查询中应用上述解决方案,因为我现在正在学习这些解决方案吗?提前致谢。 – Dhana

+0

转换(':: text')是这种obselete版本的最佳选择。 – cchantep

+0

如果我写:val selectJson = SQL(“select id,name :: text from test”),我得到错误:[JsonMappingException:此ResultSet被关闭。]在行Ok(响应) – Dhana