Pentaho HTTP Post 使用 JSON

Posted

技术标签:

【中文标题】Pentaho HTTP Post 使用 JSON【英文标题】:Pentaho HTTP Post using JSON 【发布时间】:2014-10-11 01:30:27 【问题描述】:

我是 Pentaho 的新手,我正在尝试执行以下工作流程:

从数据库中读取一堆行 做一些转换 以 JSON 格式将它们发布到 REST Web 服务

我已经使用输入步骤和 Json 输出步骤计算了前两个。

但是,我在执行最后一步时遇到了两个问题:

1) 我无法将 JSON 格式化为我想要的格式。当我只想... 时,它坚持做""=[...]。这没什么大不了的——我可以解决这个问题,因为我可以控制 Web 服务,并且可以稍微放宽输入要求。 (注意:此页面http://wiki.pentaho.com/display/EAI/JSON+output 通过设置no. rows in a block=1 和空的JSON 块名称给出了我想要的输出示例,但它不像宣传的那样工作。)

2) 这是关键。我无法将数据作为 JSON 发布。它以key=value 发布,其中键是我在 HTTP Post 字段名称(在“字段”选项卡上)中指定的名称,值是编码的 JSON。我只想将 JSON 作为请求正文发布。我试过用谷歌搜索,但找不到其他人这样做,这让我相信我只是在接近这个错误。有正确方向的指针吗?

编辑:我很擅长编写脚本(使用 javascript 或其他语言),但是当我尝试在自定义 javascript sn-p 中使用 XmlHttpRequest 时,我收到一个错误,即 XmlHttpRequest 未定义。

谢谢!

【问题讨论】:

【参考方案1】:

这很简单……只需要使用 REST 客户端 (http://wiki.pentaho.com/display/EAI/Rest+Client) 而不是 HTTP Post 任务。不知何故,我所有的谷歌搜索都没有发现这一点,所以我会把这个答案留在这里,以防其他人和我有同样的问题。

【讨论】:

我也有同样的问题。您可以发布工作配置吗?谢谢 你找到解决方案了吗@Don ...我正在努力寻找答案,...如何使用休息客户端在正文中传递 json ....【参考方案2】:

    您需要使用修改后的 JavaScript 步骤解析 JSON。例如如果 JSON 输出的输出值名为 result,其内容为 "data"=[...],则应调用 var plainJSON = JSON.stringify(JSON.parse(result).data[0]) 获取 JSON。

    在 HTTP Post 步骤中,请求实体字段应为 plainJSON。另外,不要忘记将 Content-Type 的标题添加为 application/json(您可能必须将其添加为常量)

【讨论】:

谢谢@eych。没有任何效果,但这就像一种魅力。对于其他人 - 为了清楚起见,它将是 JSON 输出 -> 修改后的 Javascript 值 -> 休息客户端。

以上是关于Pentaho HTTP Post 使用 JSON的主要内容,如果未能解决你的问题,请参考以下文章

在 Pentaho 中使用可变 JSON 字段

如何在 Json 文件中使用 FK/PK - Pentaho

如何在 pentaho bi url 中传递登录凭据

使用 Pentaho 解析嵌套的 JSON

JSON.parse() 在 pentaho 的 javascript 中不起作用

如何使用 Pentaho 从 json 中的三个表到 mongodb 执行复杂文档