gpt4 book ai didi

java - 扩展 JBoss Data Virt ws 转换器以处理 JSONP

转载 作者:行者123 更新时间:2023-12-02 10:52:09 27 4
gpt4 key购买 nike

扩展 org.teiid.translator.ws 以连接到返回 JSONP 的 Web 服务(其媒体类型通常是 application/javascript)的最佳方法是什么?现有的 ws 翻译器只能读取 JSON 或 XML。一般来说,翻译器是否旨在促进注入(inject)转换逻辑来处理任何网页结构/格式(例如 JSONP、纯文本、html 等)?

对于 JSONP,我倾向于创建自己的 org.teiid.core.types.InputStreamFactory 实现,例如 com.acme.JsonpToJsonInputStreamFactory,其中我定义了自己的 JsonpToJsonReaderInputStream (扩展 ReaderInputStream),它跳过了前导

randomFunctionName(

和尾随

)

JSONP 负载,并修改 ClobInputStreamFactory.getInputStream 以返回该负载,而不是 ReaderInputStream。然后我替换两个实例

ds = new InputStreamFactory.ClobInputStreamFactory(...);

在translator-ws-jsonp.BinaryWSProcedureExecution(其中translator-ws-jsonp基于translator-ws)中

ds = new JsonpToJsonInputStreamFactory.ClobInputStreamFactory(...);

最佳答案

WS 翻译器以 Blob 形式返回结果,如何解压结果取决于您。 IMO,你真的不需要构建另一个翻译器。

目前,JDV 中的典型用例是读取 blob 并使用 JSONTOXML 函数转换为 XML,以便可以使用 XMLTABLE 等结构将结果解析为表格结构。因此,您可以编写一个像 JSONPTOJSON 这样的 UDF,就像您提到的那样,然后使用 JSONTOXML(JSONPTOJSON(blob)) 作为 XMLTABLE 的输入。

关于java - 扩展 JBoss Data Virt ws 转换器以处理 JSONP,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52087414/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com