2
내가 복합 모델 객체를 @RestController와 함께 봄/봄 부팅 및 스프링 MVC를 사용
public abstract class BaseQuery {
private final Long characteristicId;
...
}
public abstract class ComparableQuery extends BaseQuery {
private final Object value;
private final String comparisonOperator;
...
}
public class GreaterOrEqualQuery extends ComparableQuery {
public GreaterOrEqualQuery(Long characteristicId, Object value) {
super(characteristicId, value, ">=");
}
}
public class EqualQuery extends ComparableQuery {
public EqualQuery(Long characteristicId, Object value) {
super(characteristicId, value, "=");
}
}
public class GreaterQuery extends ComparableQuery {
public GreaterQuery(Long characteristicId, Object value) {
super(characteristicId, value, ">");
}
}
public class CompositQuery extends BaseQuery {
private final String operator;
private final BaseQuery[] queries;
public CompositQuery(Long characteristicId, Operator operator, BaseQuery... queries) {
super(characteristicId);
this.operator = operator.value;
this.queries = queries;
}
...
}
등
이 모델의 샘플 사용 예는 다음과 같습니다.
Set<BaseQuery> queries = new HashSet<>();
BaseQuery megapixelCharacteristicQuery = new CompositQuery(megapixelCharacteristic.getCharacteristicId(), CompositQuery.Operator.AND, new GreaterOrEqualQuery(megapixelCharacteristic.getCharacteristicId(), 10), new LessOrEqualQuery(megapixelCharacteristic.getCharacteristicId(), 50));
queries.add(megapixelCharacteristicQuery);
queries.add(new EqualQuery(androidCharacteristic.getCharacteristicId(), true));
내가 위의 설명처럼 제대로 직렬화 모델을 얻기 위해 내 백 엔드의 REST API 엔드 포인트에 (적절한 항목으로 설정이 또는 클라이언트 응용 프로그램 (AngularJS와) 비슷한 JSON을 통과해야
[
{
"operator":"AND",
"queries":[
{
"value":10,
"comparisonOperator":"\u003e\u003d",
"characteristicId":391
},
{
"value":50,
"comparisonOperator":"\u003c\u003d",
"characteristicId":391
}
],
"characteristicId":391
},
{
"value":true,
"comparisonOperator":"\u003d",
"characteristicId":383
}
]
: 같은 Set<BaseQuery> queries
에 대한 JSON 개체가 보인다 CompositQuery
또는 EqualQuery
).
지금 내 Rest 컨트롤러에서 Spring 애플리케이션 백엔드 로직이 적절한 클래스로이 JSON을 올바르게 비 직렬화 할 수 없다.
스프링이이 구조를 deserialize 할 수 있도록하기 위해이 JSON에 몇 가지 메타 정보 (또는 다른 정보)를 제공하는 방법이 있습니까?