【问题标题】:Use Mule ESB to Parse MySQL Stored Procedure ResultSets使用 Mule ESB 解析 MySQL 存储过程结果集
【发布时间】:2016-06-01 15:59:28
【问题描述】:

我正在使用 Mule,但无法将 MySQL 存储过程的结果转换为 JSON。

如果我在结果出来时留下结果,它“有效” - 但它在数据中包含一些不必要的口香糖。 MySQL 正在返回两个结果——一个是我想要的实际数据的结果集,另一个是 UpdateCount(它总是为零,它总是返回单个 select 语句的结果)。这些作为 Hashmap 被放置在有效负载中,表示如下:

{resultSet1=[{Rounds=15, Division=1, Season=2012, Type=League, Split=null, Name=DIVISION 1, ID=1}, {Rounds=14, Division=2, Season=2012, Type=League, Split=null, Name=DIVISION 2, ID=2}, {Rounds=14, Division=3, Season=2012, Type=League, Split=null, Name=DIVISION 3, ID=3}], updateCount1=0}

当我尝试将上述内容转换为 JSON 时,它可以工作,但会打印出所有内容。

我想要做的只是获取resultSet1 之后方括号的内容。我曾尝试在我的 Object-to-JSON 控件之前执行“Set Payload”,但无法使其正常工作。

#[payload[0]] 给出了一个NullPayload,#[payload[0][resultSet1]] 也是如此,我不确定还有什么可以尝试的。

【问题讨论】:

  • 你可以在这里找到答案:- stackoverflow.com/questions/28526065/…
  • 我之前看到并尝试过,这就是我达到上述目的的方式。再次完成这些步骤后,我意识到我只是不需要 [0],这就是那个答案让我感到困惑的地方。话虽如此,当我转换为 JSON 时,它仍然会吐出一个用方括号括起来的字符串,我不认为(?)这是有效的 JSON

标签: java mysql json mule anypoint-studio


【解决方案1】:

你试过#[payload['resultSet1'][0]]或#[payload['resultSet1'].get(0)]

【讨论】:

  • 我正在返回一个比赛列表,如果我这样做,我只会得到第一个比赛。
【解决方案2】:

我发现有效的答案是 Anirban 的评论指向 How to Extract the value of resultSet returned from JDBC response (Via MEL) Mule ESB 并通过连接周围的内容来重写有效负载。

我在 Object to JSON 转换器之前将负载设置为payload['resultSet1'],然后在转换器之后我将负载重新设置为#['{\"competitions\": ' + payload +'}']

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-12-14
    • 2012-01-16
    • 1970-01-01
    • 1970-01-01
    • 2014-02-06
    • 1970-01-01
    • 2010-12-26
    • 1970-01-01
    相关资源
    最近更新 更多