给定一个示例 JSON:
{
"hello" : "wolrd",
"arrayField" : ["one", "two", "three"],
"mapField" : {
"name" : "john",
"lastName" : "doe"
}
}
Run Code Online (Sandbox Code Playgroud)
Java 中是否有框架可以帮助我从 JSON 树中获取 JSON 路径结构?类似的东西:
$.hello
$.arrayField[0]
$.arrayField[1]
$.arrayField[2]
$.mapField.name
$.mapField.lastName
Run Code Online (Sandbox Code Playgroud)
编辑:
我已经使用fasterxml 的Jackson 编写了第一种方法。但我想知道是否有更强大/灵活的东西。
final JsonNode rootNode = mapper.readValue(jon, JsonNode.class);
printFieldKeys(rootNode, "$");
private static void printFieldKeys(JsonNode rootNode, String parent) {
final Iterator<Entry<String, JsonNode>> fieldIt = rootNode.fields();
while (fieldIt.hasNext()) {
final Entry<String, JsonNode> next = fieldIt.next();
final JsonNode value = next.getValue();
final String path = parent + …Run Code Online (Sandbox Code Playgroud) 我刚刚开始使用 spring-data-mongodb 用 Java 开发一些应用程序,但遇到了一些我无法解决的问题:
有几个像这样的文档 bean:
@Document(collection="myBeanBar")
public class BarImpl implements Bar {
String id;
Foo foo;
// More fields and methods ...
}
@Docuemnt
public class FooImpl implements Foo {
String id;
String someField;
// some more fields and methods ...
}
Run Code Online (Sandbox Code Playgroud)
而且我有一个存储库类,其中包含一个简单地调用类似于以下内容的 find 方法:
public List<? extends Bar> findByFooField(final String fieldValue) {
Query query = Query.query(Criteria.where("foo.someField").is(fieldValue));
return getMongoOperations().find(query, BarImpl.class);
}
Run Code Online (Sandbox Code Playgroud)
保存一个 Bar 工作得很好,它会将它与 Foo 和 Bar 的“_class”属性一起保存在 mongo 中。但是,通过 Foo 中的某些属性查找会引发如下异常:
Exception in thread "main" java.lang.IllegalArgumentException: No …Run Code Online (Sandbox Code Playgroud)