Uploaded image for project: 'Camel'
  1. Camel
  2. CAMEL-10646

support JSONPath on beans as well as Strings & InputStreams

    Details

    • Type: Improvement
    • Status: Resolved
    • Priority: Major
    • Resolution: Fixed
    • Affects Version/s: None
    • Fix Version/s: 2.19.0
    • Component/s: camel-jsonpath
    • Labels:
      None
    • Estimated Complexity:
      Unknown

      Description

      it'd be nice if we could use json path expressions on beans too; so that if some JSON gets unmarshalled via jackson we could still use jsonPath on the object.

      Here's a possible implementation approach (though maybe there's a more optimal approach?)
      http://stackoverflow.com/a/27754489/2068211

      Maybe this code https://github.com/apache/camel/blob/master/components/camel-jsonpath/src/main/java/org/apache/camel/jsonpath/JsonPathEngine.java#L114 should check if the body can't be converted to a File, String or InputStream it tries to convert the payload to something like JSonPathNavigator (a new interface we create). If it can be converted we use that interface to transform the payload.

      Then we could have decoupled ways to convert objects into navigable formats (e.g. Maps / Lists)?

      e.g.

      public JacksonJsonPathNavigator implements JSonPathNavigator {
        public Object convert(Object input) {
          ObjectMapper mapper = new ObjectMapper();
          return mapper.convertValue(input, Map.class);
        }
      }
      

      This is how we've used saxon in the past with different libraries to perform XPath navigation (e.g. c24 stuff).

      Another approach could just be to try convert the object to a Map and have a Jackson based converter that can convert objects with a Jackon annotation to a Map using the above code?

        Attachments

          Activity

            People

            • Assignee:
              davsclaus Claus Ibsen
              Reporter:
              jstrachan james strachan
            • Votes:
              0 Vote for this issue
              Watchers:
              2 Start watching this issue

              Dates

              • Created:
                Updated:
                Resolved: