我正在获取一个很大的json文档,我只想将其中的一部分解析为我的java类。我正在考虑使用jsonpath之类的东西来从中提取部分数据,而不是创建Java类的整个层次结构。
Jackson或Gson是否以任何方式支持jsonpath?如果是,您能否为此提供一些示例或指向另一个标准库?
例如,假设我有一个下面的文档,而我想在我的java类中仅从下面提取数据:
$ .store.book [0]-仅第一本书$ .store.bicycle.price-自行车的价格
{
"store": {
"book": [
{
"category": "reference",
"author": "Nigel Rees",
"title": "Sayings of the Century",
"price": 8.95
},
{
"category": "fiction",
"author": "Evelyn Waugh",
"title": "Sword of Honour",
"price": 12.99
},
{
"category": "fiction",
"author": "Herman Melville",
"title": "Moby Dick",
"isbn": "0-553-21311-3",
"price": 8.99
},
{
"category": "fiction",
"author": "J. R. R. Tolkien",
"title": "The Lord of the Rings",
"isbn": "0-395-19395-8",
"price": 22.99
}
],
"bicycle": {
"color": "red",
"price": 19.95
}
},
"expensive": 10
}
该Jayway JsonPath图书馆阅读使用JSON路径值的支持。
例如:
String json = "...";
Map<String, Object> book = JsonPath.read(json, "$.store.book[0]");
System.out.println(book); // prints {category=reference, author=Nigel Rees, title=Sayings of the Century, price=8.95}
Double price = JsonPath.read(json, "$.store.bicycle.price");
System.out.println(price); // prints 19.95
您还可以将JSON对象直接映射到类,例如在GSON或Jackson中:
Book book = JsonPath.parse(json).read("$.store.book[0]", Book.class);
System.out.println(book); // prints Book{category='reference', author='Nigel Rees', title="Sayings of the Century", price=8.95}
如果您想专门使用GSON或Jackson进行反序列化(默认为使用json-smart),也可以配置以下命令:
Configuration.setDefaults(new Configuration.Defaults() {
private final JsonProvider jsonProvider = new JacksonJsonProvider();
private final MappingProvider mappingProvider = new JacksonMappingProvider();
@Override
public JsonProvider jsonProvider() {
return jsonProvider;
}
@Override
public MappingProvider mappingProvider() {
return mappingProvider;
}
@Override
public Set<Option> options() {
return EnumSet.noneOf(Option.class);
}
});
有关更多详细信息,请参见文档。
问题内容: 由于与我正在从事的项目有关的原因,我希望对JSON文件的整个查询都以字符串形式保存(例如,(而不是必须将文档的每个级别临时存储为单独的对象)) 。 我目前正在使用JsonPath(版本0.8.0,这是我能找到的最新版本),基本上这正是我在寻找的东西,但是我得到了下面显示的异常。我只是使用JsonPath Google代码页上的示例JSON,并使用其中的一个示例查询。 我在这里做错了什么
我目前使用的是JsonPath(0.8.0版本,这是我能找到的最新版本),这基本上正是我要寻找的,但是我得到了如下所示的异常。我只是使用JsonPath google代码页上给出的示例JSON,使用他们的示例查询之一。 我在这里做错了什么?或者,如果没有解决方案,那么Java中是否有JsonPath的替代方案?我希望能够以字符串的形式传递整个查询,而且必须是Java的。 功能: 例外情况: 实践J
JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式,它使得人们很容易的进行阅读和编写。同时也方便了机器进行解析和生成。适用于进行数据交互的场景,比如网站前台与后台之间的数据交互。 JSON和XML的比较可谓不相上下。 官方文档:http://docs.python.org/library/json.html Json在线解析网站:http://www.js
JsonPath 对于 JSON 来说相当于 XPATH 对于 XML。这是一个简单的从文档中抽取指定信息的工具,提供多种语言实现版本,包括:Javascript, Java, Python 和 PHP
问题内容: 我正在使用spring- boot开发后端服务。有一种方案可以比较2个bean(一个是DB对象,另一个是客户请求的对象),然后返回“新元素”,“修改后的元素”,如果没有变化,则返回false。2豆格式如下 我已经在Java上浏览了有关此方案的bean比较的Internet,但是找不到任何更简单的解决方案,但是找到了一些很酷的JSON解决方案。我可以看到GSON的一些解决方案,但它不会返
问题内容: 我在下面的序列化器中进行JodaTime处理: 然后,在每个模型对象上,执行以下操作: 通过以上设置,肯定可以工作。但是,我不喜欢继续写书的想法。我需要的是没有模型对象的解决方案。是否可以将这种配置作为一个配置写入spring xml的某个地方? 感谢你的帮助。 问题答案: 尽管你可以为每个日期字段添加注释,但最好为对象映射器进行全局配置。如果使用杰克逊,则可以按以下方式配置弹簧: 对