4

以下に貼り付けたようなJSONがあります。個々のレコードを抽出してキューにプッシュしようとしています。Muleで各レコードを抽出するにはどうすればよいですか?コレクションスプリッターとforeachループを使用しようとしていますが、これを機能させる方法がわかりません。

{
  "locations": {
    "record": [
      {
        "id": 8817,
        "loc": "NEW YORK CITY"
      },
      {
        "id": 2873,
        "loc": "UNITED STATES"
      },
      {
        "id": 1501,
        "loc": "NEW YORK STATE"
      }
    ]
  }
}
4

3 に答える 3

5

これをする:

  1. JSON エンティティを Java 構造の階層に変換する
  2. recordリストを抽出する
  3. リストを分割する

現在、Mule XML 構成では次のようになっています。

<json:json-to-object-transformer returnClass="java.util.Map" />
<expression-transformer expression="#[payload.locations.record]" />
<collection-splitter />
<!-- TODO: dispatch to queue -->
于 2012-10-01T20:59:34.530 に答える
1

returnClass="java.util.Map" が機能するソリューションをもう 1 つ追加しています。Fiddler または POST man クライアントからデータを送信する際に、http メソッドを POST として使用して、同じ JSON を本文に入れることができるコードを見てください。

このフローでは、Expression Transformer を使用する代わりに、Splitter で式を直接割り当てています。Any Point Studioを使用して機能させています。

    <flow name="mule-splitterFlow2" doc:name="mule-splitterFlow2">
        <http:inbound-endpoint exchange-pattern="request-response" host="localhost" port="8081" doc:name="HTTP" path="splitterjson"/>
        <json:json-to-object-transformer returnClass="java.util.Map" doc:name="JSON to Object"/>
        <splitter expression="#[message.payload.locations.record]" doc:name="Splitter">
        </splitter>
        <logger level="INFO" doc:name="Logger" message="#[message.payload]"/>
    </flow>

于 2014-12-02T14:00:18.720 に答える