【问题标题】:Extraction of the JSON Object from a JSON file using streams of JAVA 8使用 JAVA 8 流从 JSON 文件中提取 JSON 对象
【发布时间】:2020-03-12 06:47:35
【问题描述】:

我希望从 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 的值。我怎么能得到同样的东西。我希望在这里使用 JAVA 8 的流概念。提前致谢。

【问题讨论】:

  • 到目前为止你有没有尝试过?
  • 是的,我首先尝试通过将整个消息传递到 JSON 对象中来提取值,然后使用 getstring() 函数从中提取单个数据。

标签: java json stream


【解决方案1】:

我总是使用 com.fasterxml.jackson.databind 的 InputStream、FileReader 和 Object mapper

这是一种从资源中获取纯 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应该自动完成所有事情。

【讨论】:

  • Pojo/Object 应该包含一个更多的引用 Pojo/object。根据 Mishra 提到的更改代码
  • 感谢洛娃的投入。但是要求就像我需要从一个 JSON 对象的最里面的对象中提取的值,它上面有 2 个父对象..
  • @DebasishMishra 如果您只想获取“内部内部”值,可以使用 JsonPath
猜你喜欢
  • 1970-01-01
  • 2023-04-02
  • 2016-05-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-02-11
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多