Извлечение объекта JSON из файла JSON с использованием потоков JAVA 8 - PullRequest
0 голосов
/ 12 марта 2020

I sh для извлечения объекта JSON из файла JSON. Уловка в том, что я хотел бы получить объект nth 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"
                    }
       },
    }

  ]
}

Оттуда я wi sh, чтобы получить значения Country и Town в строковом формате. Как я могу получить то же самое. Я sh использую концепцию потоков JAVA 8 здесь. Заранее спасибо.

1 Ответ

0 голосов
/ 12 марта 2020

Я всегда использую InputStream, FileReader и Object mapper by com.faster xml .jackson.databind

Здесь метод для получения простой 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 с полями специфицированного c. Например:

public class YourObject {

    private YourSecondObject yourSecondObject;

}

И объектный картограф должен делать все автоматически.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...