此内容没有您所选择的语言版本。
Chapter 20. JSonPath
Overview 复制链接链接已复制到粘贴板!
复制链接链接已复制到粘贴板!
The JSonPath language provides a convenient syntax for extracting portions of a JSon message. The syntax of JSon is similar to XPath, but it is used to extract JSon objects from a JSon message, instead of acting on XML. The
jsonpath DSL command can be used either as an expression or as a predicate (where an empty result gets interpreted as boolean false).
Adding the JSonPath package 复制链接链接已复制到粘贴板!
复制链接链接已复制到粘贴板!
To use JSonPath in your Camel routes, you need to add a dependency on
camel-jsonpath to your project, as follows:
<dependency>
<groupId>org.apache.camel</groupId>
<artifactId>camel-jsonpath</artifactId>
<version>${camel-version}</version>
</dependency>
Java example 复制链接链接已复制到粘贴板!
复制链接链接已复制到粘贴板!
The following Java example shows how to use the
jsonpath() DSL command to select items in a certain price range:
from("queue:books.new")
.choice()
.when().jsonpath("$.store.book[?(@.price < 10)]")
.to("jms:queue:book.cheap")
.when().jsonpath("$.store.book[?(@.price < 30)]")
.to("jms:queue:book.average")
.otherwise()
.to("jms:queue:book.expensive")
If the JSonPath query returns an empty set, the result is interpreted as
false. In this way, you can use a JSonPath query as a predicate.
XML example 复制链接链接已复制到粘贴板!
复制链接链接已复制到粘贴板!
The following XML example shows how to use the
jsonpath DSL element to define predicates in a route:
<camelContext id="camel" xmlns="http://camel.apache.org/schema/spring">
<route>
<from uri="direct:start"/>
<choice>
<when>
<jsonpath>$.store.book[?(@.price < 10)]</jsonpath>
<to uri="mock:cheap"/>
</when>
<when>
<jsonpath>$.store.book[?(@.price < 30)]</jsonpath>
<to uri="mock:average"/>
</when>
<otherwise>
<to uri="mock:expensive"/>
</otherwise>
</choice>
</route>
</camelContext>
JSonPath injection 复制链接链接已复制到粘贴板!
复制链接链接已复制到粘贴板!
When using bean integration to invoke a bean method, you can use JSonPath to extract a value from the message and bind it to a method parameter. For example:
// Java
public class Foo {
@Consume(uri = "activemq:queue:books.new")
public void doSomething(@JsonPath("$.store.book[*].author") String author, @Body String json) {
// process the inbound message here
}
}
Reference 复制链接链接已复制到粘贴板!
复制链接链接已复制到粘贴板!
For more details about JSonPath, see the JSonPath project page.