小编Rus*_*ell的帖子

如何获取 JSON 路径?

给定一个示例 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)

java json

5
推荐指数
1
解决办法
1074
查看次数

子文档中的 SD MongoDB 多态性

我刚刚开始使用 spring-data-mongodb 用 Ja​​va 开发一些应用程序,但遇到了一些我无法解决的问题:

有几个像这样的文档 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)

polymorphism spring mongodb spring-data-mongodb

3
推荐指数
1
解决办法
4439
查看次数

标签 统计

java ×1

json ×1

mongodb ×1

polymorphism ×1

spring ×1

spring-data-mongodb ×1