У меня есть простая успокаивающая служба, которую я разрабатываю на 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; }
}
Есть нет проблем с маршалингом этого объекта, но демаршалинг не кажется простым. Также есть ли поддержка исключения записей для значений объекта, которые являются нулевыми?