лучший подход для маршалинга немаршалинга неизменяемых объектов с шаблоном построителя

У меня есть простая успокаивающая служба, которую я разрабатываю на java. Я рассматривал несколько вариантов маршаллинга / демаршаллинга json. Доступные возможные подходы, например, jaxb jackson и т. Д., Довольно новы для меня, и я стараюсь их использовать. Мне было интересно, могу ли я получить совет о том, какой подход и технология лучше всего использовать, особенно с учетом того, что многие из интересующих меня объектов я реализовал как неизменяемые и использовал шаблон конструктора. Таким образом, нет сеттеров, а конструктор является частным.

Я рассмотрел этот предыдущий вопрос: Шаблон Jackson + Builder? размещен в stackoverflow. Я рассматриваю что-то вроде этого подхода, хотя было бы здорово получить некоторые указатели на дополнительные ресурсы об использовании @JsonDeserialize

Вот очень простой пример рассматриваемого типа объекта

public class Reading {

private final double xCoord;
private final double yCoord;
private final double diameter;
private final double reliability;
private final String qualityCode;


private Reading(Builder builder){
    xCoord = builder.xCoord;
    yCoord = builder.yCoord;
    diameter = builder.diameter;
    reliability = builder.reliability;
    qualityCode = builder.qualityCode;
}


public static class Builder {
    //required parameters
    private final double diameter;
    //optional parameters
    private double xCoord = 0.0;
    private double yCoord = 0.0;
    private double reliability = 1.0;
    private String qualityCode;


    public Builder (double diameter){
        this.diameter = diameter;
    }

    public Builder reliability(double val){
        reliability = val;
        return this;
    }

    public Builder qualityCode(String qualityCode){
        this.qualityCode = qualityCode;
        return this;
    }

    public Builder coordinates(double xCoord, double yCoord){
        this.xCoord = xCoord;
        this.yCoord = yCoord;
        return this;
    }

    public Reading build(){
        return new Reading(this);
    }

}

public double getXCoord() {return xCoord;}

public double getYCoord() {return yCoord;}

public String getQualityCode() {return qualityCode;}

public double getDiameter() { return diameter;}

public double getReliability() {return reliability; }

}

Есть нет проблем с маршалингом этого объекта, но демаршалинг не кажется простым. Также есть ли поддержка исключения записей для значений объекта, которые являются нулевыми?

8
задан Community 23 May 2017 в 11:52
поделиться