gpt4 book ai didi

java - Java中JSONPath的基本使用

转载 作者:太空狗 更新时间:2023-10-29 22:40:28 25 4
gpt4 key购买 nike

我将 JSON 作为字符串,将 JSONPath 作为字符串。我想使用 JSON 路径查询 JSON,将生成的 JSON 作为字符串获取。

我收集到 Jayway's json-path is the standard . online API , 但是,与 actual library you get from Maven 没有太大关系. GrepCode's version不过大致匹配。

看来我应该能够做到:

String originalJson; //these are initialized to actual data
String jsonPath;
String queriedJson = JsonPath.<String>read(originalJson, jsonPath);

问题是 read根据 JSONPath 实际找到的内容(例如 List<Object>Stringdouble 等)返回任何它认为最合适的内容,因此我的代码对某些查询抛出异常。假设有某种方法可以查询 JSON 并取回 JSON 似乎是很合理的;有什么建议吗?

最佳答案

jayway JsonPath 找到的 Java JsonPath API自从以上所有答案/评论以来,可能已经发生了一些变化。文档也是。只需点击上面的链接并阅读 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(..)”将返回类“JsonContent”的对象'实现一些接口(interface),例如'ReadContext ',其中包含几个不同的 '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);

希望这对任何人都有帮助。

关于java - Java中JSONPath的基本使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24412511/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com