在teiid中使用JSON数组

时间:2017-11-05 17:37:49

标签: teiid

我正在使用teiid来调用REST。

如果一个输出响应具有JSON数组的联系人,这些联系人具有不同的字段,例如id,first-name lastname。 我应该在程序中写什么来获取JSON数组。

我的详细信息示例将非常有用 三江源

1 个答案:

答案 0 :(得分:0)

例如,您有像这样的JSON内容

[
   {
      "firstName":"George",
      "lastName":"Micheal"
   },
   {
      "firstName":"Jerry",
      "lastName":"Springer"
   }
]

您可以发出类似

的查询
SELECT * 
FROM XMLTABLE('/response/response' passing jsontoxml('response', jsonparse('[{"firstName" : "George", "lastName" : "Micheal" }, { "firstName" : "Jerry", "lastName" : "Springer" }]', TRUE)) COLUMNS firstname string, lastname string) x

这将返回表格结果,如

firstName  lastName
George     Micheal
Jerry      Springer

现在,如果您愿意,可以将上面的内容包装到像

这样的视图中
CREATE VIEW Person (firstName string, lastName String) AS
    SELECT x.firstName, x.lastName 
    FROM XMLTABLE('/response/response' passing jsontoxml('response', jsonparse('[{"firstName" : "George", "lastName" : "Micheal" }, { "firstName" : "Jerry", "lastName" : "Springer" }]', TRUE)) COLUMNS firstname string, lastname string) x

将上述视图定义放入VDB,当您将VDB部署到Teiid Server中时,使用JDBC驱动程序可以简单地发布

select * from person

上面还要注意,由于我提供的是JSON文档,我需要JSONPARSE函数,否则它需要blob。作为root的双重“/ response / response”是棘手的部分,其中JSONTOXML以“response”元素开头包装每个数组,然后在“response”元素中包装root。