Class JsonPathPipe

All Implemented Interfaces:
FrankElement, HasApplicationContext, HasName, HasTransactionAttribute, IConfigurable, IForwardTarget, IPipe, IScopeProvider, IWithParameters, NameAware, EventThrowing, org.springframework.beans.factory.Aware, org.springframework.context.ApplicationContextAware, org.springframework.context.Lifecycle

@EnterpriseIntegrationPattern(TRANSLATOR) public class JsonPathPipe extends FixedForwardPipe
Apply a one-liner JSON path expression to the input to extract a value from input data. If the input is in XML format, it will be converted to JSON using the same method as the Xml2Json pipe. Depending on the result of the expression, this pipe can return a string value or JSON value.

Examples

JSON Path Expression Input Message Output
$.a
{
   "a": "Hello World"
 } 
String with value Hello World
$.*.a
{
   "k1": {"a": 1},
   "k2": {"a": 2}
 } 
JSON Array with value
[1, 2]
$.a
{
   "a": {
     "Hello": "World"
   }
 } 
JSON Object with value
{
   "Hello": "World"
 } 
If the input message does not have a match with the expression, then the Exception Forward path will be taken.

  • Constructor Details

    • JsonPathPipe

      public JsonPathPipe()
  • Method Details

    • configure

      public void configure() throws ConfigurationException
      Description copied from class: FixedForwardPipe
      Checks for correct configuration of forward.
      Specified by:
      configure in interface IConfigurable
      Overrides:
      configure in class FixedForwardPipe
      Throws:
      ConfigurationException - in case it was not able to configure the component.
    • doPipe

      public PipeRunResult doPipe(Message message, PipeLineSession session) throws PipeRunException
      Description copied from interface: IPipe
      This is where the action takes place. Pipes may only throw a PipeRunException, to be handled by the caller of this object. Implementations must either consume the message, or pass it on to the next Pipe in the PipeRunResult. If the result of the Pipe does not depend on the input, like for the FixedResultPipe, the Pipe can schedule the input to be closed at session exit, by calling Message.closeOnCloseOf(PipeLineSession) This allows the previous Pipe to release any resources (e.g. connections) that it might have kept open until the message was consumed. Doing so avoids connections leaking from pools, while it enables efficient streaming processing of data while it is being read from a stream.
      Throws:
      PipeRunException
    • setJsonPathExpression

      @Mandatory public void setJsonPathExpression(String jsonPathExpression)