我正在使用teiid来调用REST。
如果一个输出响应具有JSON数组的联系人,这些联系人具有不同的字段,例如id,first-name lastname。 我应该在程序中写什么来获取JSON数组。
我的详细信息示例将非常有用 三江源
答案 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。