我正在使用 teiid 调用 REST。
如果一个输出响应有一个 JSON 数组,其中包含不同字段的联系人,例如 id、first-name lastname。我应该在获取 JSON 数组的过程中写什么。
我的详细信息的示例将非常有帮助谢谢
我正在使用 teiid 调用 REST。
如果一个输出响应有一个 JSON 数组,其中包含不同字段的联系人,例如 id、first-name lastname。我应该在获取 JSON 数组的过程中写什么。
我的详细信息的示例将非常有帮助谢谢
例如,您有这样的 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”元素中。