У меня есть простой, спокойный сервис, который я разрабатываю в Java.Я искал несколько вариантов маршаллинга / демаршаллинга json.Возможные подходы, Джексб Джексон и т. Д., Являются для меня совершенно новыми, и я пытаюсь с ними справиться.Мне было интересно, смогу ли я получить какой-нибудь совет о том, какой подход и технологии лучше всего использовать, особенно если учесть, что многие объекты, которые меня интересуют, реализованы как неизменяемые, и я использовал шаблон компоновщика.Так что нет сеттеров, а конструктор является приватным.
Я смотрел на этот предыдущий вопрос: Шаблон Джексона + Строителя? размещен на 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; }
}
Нет проблем с маршалингом этого объекта, но демаршаллинг не кажется прямым.Также есть поддержка пропуска записей для значений объекта, которые являются нулевыми?