使用Java8流从JSON文件提取JSON对象

使用Java8流从JSON文件提取JSON对象,java,json,stream,Java,Json,Stream,我希望从JSON文件中提取JSON对象。关键是,我想得到另一个对象中的第n个json对象。为了简单起见,我举个例子。 为了更好地参考,我在这里附上了我的JSON示例 { "header": { "Company Name": "ABC", "Address": "XYZ", "Registration": "XYZq", }, "data": [ { "EmployeeNo": "254535", "DateHire

我希望从JSON文件中提取JSON对象。关键是,我想得到另一个对象中的第n个json对象。为了简单起见,我举个例子。 为了更好地参考,我在这里附上了我的JSON示例

    {
 "header": {
    "Company Name": "ABC",
    "Address": "XYZ",
    "Registration": "XYZq", 
  },  
  "data": [
    {
      "EmployeeNo": "254535",
      "DateHired": "2019-10-04",
      "personalDetails": 
      {
        "Father Name": "ABCD",
        "PhoneNumber": "7868868686",
        "pstlAdrress": {
          "Country": "India",
          "Town": "Mumbai"
                    }
       },
    }

  ]
}

从那里,我希望得到字符串格式的Country和Town值。我怎样才能得到同样的。我希望在这里使用Java8的streams概念。提前谢谢

我总是通过com.fasterxml.jackson.databind使用InputStream、FileReader和对象映射器

下面是从您的资源中获取纯JSON字符串的方法:

public String getJsonFromResource(String resource) {
    StringBuilder json = new StringBuilder();

    try (FileReader fileReader = new FileReader(YOURCLASS.class.getResource(resource).getFile())) {
        BufferedReader reader = new BufferedReader(fileReader);

        String line;
        while((line = reader.readLine()) != null) {
            json.append(line);
        }
    } catch(IOException e) {
        e.printStackTrace();
    }

    return json.toString();
}
这里是将JSON映射为对象的方法:

public YourObject getYourObject(String plainJson) throws JsonProcessingException {
    ObjectMapper objectMapper = new ObjectMapper();

    YourObject yourObject = objectMapper.readValue(plainJson, YourObject.class);

    return yourObject;
}
//编辑:

要获取存储在另一个对象的字段中的对象,只需创建一个带有特定字段的java类。例如:

public class YourObject {

    private YourSecondObject yourSecondObject;

}

objectmapper应该可以自动完成所有操作。

到目前为止,您尝试过什么吗?是的,我尝试先将整个消息传递到一个JSON对象,然后使用getstring()函数从该对象中提取单个数据,以提取值。Pojo/Object应该再包含一个引用Pojo/Object。根据Mishra提到的输入Lova的Hanks更改代码。但这个要求就像我需要从一个JSON对象的最内部的对象中提取值一样,该对象上面有两个父对象。@DebasishMishra若您只想获取“内部”值,您可以使用JsonPath