java - Java使用jsonpath从另一个Json创建一个新的Json读取

标签 java json jsonpath

在Java(任何库)中,从类似于以下内容的json(带有嵌套字段,数组和嵌入式文档)开始:

{
  "first" : "1",
  "second" : {
     "third" : "3",
     "fourth" : "4"
  },
  "fifth" : [
     {
        "index" : 0,
        "value": "something"
     },
     {
        "index" : 1,
        "value": "else"
     }
  ]
}


然后应用以下jsonpaths(例如,理想情况下是任何一种jsonpath)


second.fourth
fifth[1].[*]


创建一个如下的json文档:

{
  "second" : {
    "fourth" : "4"
  },
  "fifth" : [
     {
        "index" : 1,
        "value": "else"
     }
  ]
}


因此,问题是:不仅可以使用jsonpath来获取数据,而且还可以使用所有嵌套字段并创建新的json作为输入的子集吗?

像往常一样欣赏任何例子

注意:对此进行了很多思考之后,我得出的结论是,我需要的是Mongodb中$project的实现,但使用Java且没有数据库。

最佳答案

如果可以使用lodash,则为对象设置和获取功能。

var source = {
  "first" : "1",
  "second" : {
     "third" : "3",
     "fourth" : "4"
  },
  "fifth" : [
     {
        "index" : 0,
        "value": "something"
     },
     {
        "index" : 1,
        "value": "else"
     }
  ]
};

var destination = {};

var path = "second.fourth";

_.set(destination, path, _.get(source, path));

path = "fifth[0]";     //Drawback -> if use fifth[1], then destination.fifth will have 0th element empty and 1st element filled.

_.set(destination, path, _.get(source, path));



否则,您将需要为这些set和get运算符编写javascript。

关于java - Java使用jsonpath从另一个Json创建一个新的Json读取,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56598463/

相关文章:

java - 如何检测Java中的字符集编码?

java - 在 Java 中从 JSONPATH 中获取字符串字段

java - 使用 JayWay JSONPath 提取不同深度的多个 JSON 对象

java - 在尝试使用之前创建的资源语句中使用资源

java - 在 Java 中对字符串进行标记

c# - 如何使用NEST elasticsearch批量插入Json?

java - 直接从 Java 中的模型类创建 JSON 对象

java - 如何为 Broadleaf Commerce REST API 设置 JSON 格式 - 包装器成员为空?

jsonpath - 在 Spring Boot 测试中将 JSON 中的对象与 jsonpath 匹配

Java:带有 Callables 的 ExecutorService:在循环中重用同一个池?需要关机吗?