Mule collection splitter with JSON

I have a JSON that looks something like the one pasted below. I am trying to extract each individual record and push it onto a queue. How would I extract each record in Mule? I've been trying to use the collection splitter and foreach loop, but I can't figure out how to get this to work.

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

Answers


To do this:

  1. Transform the JSON entity to a hierarchy of Java structures
  2. Extract the record list
  3. Split the list

Now in Mule XML config:

<json:json-to-object-transformer returnClass="java.util.Map" />
<expression-transformer expression="#[payload.locations.record]" />
<collection-splitter />
<!-- TODO: dispatch to queue -->

try this, instead of Map put List. That is working fine for me.

<json:json-to-object-transformer returnClass="java.util.List" />
<expression-transformer expression="#[message.payload.locations.record]" />
<collection-splitter />

I am adding one more solution in which returnClass="java.util.Map" works please have a look at code in which you can put the same JSON in the body using http method as POST while sending data from Fiddler or POST man client.

Here in this flow i am directly assigning expression in the Splitter instead of using Expression Transformer. I am using Any Point Studio to make it work.

    <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>

Need Your Help

PHP Simple HTML DOM Parser - Cannot Parse Some Web Pages

php parsing dom wamp

I am currently trying to use "PHP Simple HTML DOM Parser" (http://simplehtmldom.sourceforge.net/) to perform some basic web scraping.

Negative clock cycle measurements with back-to-back rdtsc?

c x86-64 inline-assembly overhead rdtsc

I am writing a C code for measuring the number of clock cycles needed to acquire a semaphore. I am using rdtsc, and before doing the measurement on the semaphore, I call rdtsc two consecutive times...