속성을 JSON으로 반환하지만 올바른 순서가 아닌 Camel이있는 끝점이 있습니다. 반환 클래스에는 모든 반환시 반드시 있어야하는 일부 컨트롤 데이터를 반환하는 수퍼 클래스가 있습니다.Apache Camel - 경로에서 GSON JsonSerializer 사용
public class Respuesta implements Serializable {
@SerializedName("subject")
@Expose
private String subject;
@SerializedName("action")
@Expose
private String action;
@SerializedName("status")
@Expose
private Integer status;
@SerializedName("description")
@Expose
private String description;
...getter/setter
최종 반환 클래스는 해당 부분을 상속합니다.
public class FacturadoresListarResponse extends Respuesta implements Serializable {
@SerializedName("lst")
@Expose
private List<Facturador> listaProveedores;
public FacturadoresListarResponse(List<Facturador> listaProveedores) {
super();
this.listaProveedores = listaProveedores;
}
public FacturadoresListarResponse() {
}
public void setRespuesta(Respuesta rsp) {
super.setAction(rsp.getAction());
super.setDescription(rsp.getDescription());
super.setStatus(rsp.getStatus());
super.setSubject(rsp.getSubject());
}
getter/setter...
}
그래서, GSON의 Marshaller의 와이어에 결과 이런 종류의를 제공, 먼저 상속 클래스 속성 (LST), 다음 부모 클래스 속성 (제목, 상태 등)을합니다.
{
"lst": [
{
"rut": "XXXX-X",
"rzsoc": "XXXXXXx",
"res": 1,
"ema": "[email protected]"
}
],
"subject": "facturadores",
"action": "listar",
"status": 0,
"description": "OK"
}
데이터를 순서대로 작성하는 GSON 사용자 정의 JsonSerializer를 작성했지만 Camel DSL 구문에서는 사용할 수 없습니다. 시도했지만 결과가 없습니다 :
이러한 유형의 serializer를 사용하여 Jackson으로 마이그레이션하지 않고 올바른 순서를 유지할 수 있습니까?
참고 : serializer의 코드 (FacturadoresListarRspSerializer.class).
public class FacturadoresListarRspSerializer implements JsonSerializer<FacturadoresListarResponse> {
@Override
public JsonElement serialize(FacturadoresListarResponse src, Type typeOfSrc, JsonSerializationContext context) {
final JsonObject jsonObject = new JsonObject();
jsonObject.addProperty("subject", src.getSubject());
jsonObject.addProperty("action", src.getAction());
jsonObject.addProperty("status", src.getStatus());
jsonObject.addProperty("description", src.getDescription());
final JsonArray jsarrFacturadores = new JsonArray();
for (final Facturador fact : src.getListaProveedores()) {
JsonObject jsobFacturadores = new JsonObject();
jsobFacturadores.addProperty("rut", fact.getRutCompleto());
jsobFacturadores.addProperty("rzsoc", fact.getRazonSocial());
jsobFacturadores.addProperty("res", fact.getResolucion());
jsobFacturadores.addProperty("ema", fact.getCorreoEnvio());
jsarrFacturadores.add(jsobFacturadores);
}
jsonObject.add("lst", jsarrFacturadores);
return jsonObject;
}
}
감사합니다. 그것은 적절한 순서로 예상되는 응답을주는 일을했습니다. –