Java JsonPath API 位于jayway JsonPath https://github.com/jayway/JsonPath自从上述所有答案/评论以来,可能已经发生了一些变化。文档也是如此。只需点击上面的链接并阅读该内容即可自述文件.md https://github.com/jayway/JsonPath/blob/master/README.md,它包含一些非常清晰的使用文档(IMO)。
基本上,从该库当前最新版本 2.2.0 开始,有几种不同的方法可以实现此处的要求,例如:
Pattern:
--------
String json = "{...your JSON here...}";
String jsonPathExpression = "$...your jsonPath expression here...";
J requestedClass = JsonPath.parse(json).read(jsonPathExpression, YouRequestedClass.class);
Example:
--------
// For better readability: {"store": { "books": [ {"author": "Stephen King", "title": "IT"}, {"author": "Agatha Christie", "title": "The ABC Murders"} ] } }
String json = "{\"store\": { \"books\": [ {\"author\": \"Stephen King\", \"title\": \"IT\"}, {\"author\": \"Agatha Christie\", \"title\": \"The ABC Murders\"} ] } }";
String jsonPathExpression = "$.store.books[?(@.title=='IT')]";
JsonNode jsonNode = JsonPath.parse(json).read(jsonPathExpression, JsonNode.class);
作为参考,调用 'JsonPath.parse(..)' 将返回类 ' 的对象Json内容 https://github.com/jayway/JsonPath/blob/master/json-path/src/main/java/com/jayway/jsonpath/internal/JsonContext.java' 实现一些接口,例如 '读取上下文 https://github.com/jayway/JsonPath/blob/master/json-path/src/main/java/com/jayway/jsonpath/ReadContext.java',其中包含几个不同的'read(..)'操作,例如上面演示的操作:
/**
* Reads the given path from this context
*
* @param path path to apply
* @param type expected return type (will try to map)
* @param <T>
* @return result
*/
<T> T read(JsonPath path, Class<T> type);
希望这对任何人都有帮助。