0

我正在使用 teiid 调用 REST。

如果一个输出响应有一个 JSON 数组,其中包含不同字段的联系人,例如 id、first-name lastname。我应该在获取 JSON 数组的过程中写什么。

我的详细信息的示例将非常有帮助谢谢

4

1 回答 1

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。棘手的部分是双“/response/response”作为根,其中 JSONTOXML 包装每个数组以“response”元素开头,然后还将根包装在“response”元素中。

于 2017-11-06T14:58:24.360 回答