Ява для петлевой печати только 1-е значение - BuilderPattern - PullRequest
0 голосов
/ 07 июля 2019

Я пытаюсь экспериментировать и изучать BuilderPattern, одновременно читая файл json.Моя цель - создать объект, используя данные, которые я получаю из файла json.Вот как выглядит файл json:

[{
        "firstName": "Git",
        "lastName": "Hub",
        "website": "howtodoinjava.com"
    },
    {
        "firstName": "Brian",
        "lastName": "Schultz"
    }
]

Class1: класс сотрудника

public class Employee {

    private String firstName; // required
    private String lastName; // required
    private String website; // optional

    //Only has setters
    public void setFirstName(String firstName) {
        this.firstName = firstName;
    }

    public void setLastName(String lastName) {
        this.lastName = lastName;
    }

    public void setWebsite(String website) {
        this.website = website;
    }

    //no public constructor. So the only way to get a Employee object is through the EmployeeBuilder class.
    private Employee(EmployeeBuilder builder) {
        this.firstName = firstName;
        this.lastName = lastName;
        this.website = website;
    }

    public static class EmployeeBuilder {

        private String firstName; // required
        private String lastName; // required
        private String website; // optional

        public EmployeeBuilder() throws IOException {
        }

        public EmployeeBuilder requiredFirstName(String firstName) {
            this.firstName = firstName;
            return this;
        }

        public EmployeeBuilder requiredLastName(String lastName) {
            this.lastName = lastName;
            return this;
        }

        public EmployeeBuilder optionalWebsite(String website) {
            this.website = website;
            return this;
        }

        //Return the finally constructed User object
        public Employee build() {
            Employee emp = new Employee(this);
            return emp;
        }

    }
}

Class2: класс пользователя

public class User {

    String firstName;
    String lastName;
    String website;

    //Using Getters to get values from Json
    public String getFirstName() {
        return firstName;
    }

    public String getLastName() {
        return lastName;
    }

    public String getWebsite() {
        return website;
    }
}

3 Основной класс

public class Main {

    public static void main(String[] args) throws IOException {

        ObjectMapper object = new ObjectMapper();

        User[] user = object.readValue(new File("C:\\MyTemp\\jackson.json"), User[].class);
        //Employee employee= new Employee.EmployeeBuilder().requiredFirstName(person.getFirstName()).requiredLastName(person.getLastName()).optionalWebsite(person.getWebsite()).build();

        List<User> emp1 = object.readValue("C:\\MyTemp\\jackson.json", new TypeReference<List<User>>() {});
        emp1.stream().forEach(x -> System.out.println(x));

        /*for (User person : user) {
            Employee employee= new Employee.EmployeeBuilder().requiredFirstName(person.getFirstName()).build();
            System.out.println(employee);
        } */
    }
}

Проблема: Когда я запускаю этот код, все, что я получаю, это первые имена.Гит и Брайан.Я не получаю фамилии или веб-сайт.

Может кто-нибудь подсказать, что мне не хватает?Заранее спасибо за ваше время.

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