Madhur Ahuja:
Tengo un esquema complejo para el que estoy generando POJO de. Sin embargo, he notado que los tipos complejos no están siendo generados por artículos dentro Tipo array
aunque son de tipo marcada object
. Hice una prueba rápida con muy simple esquema
{
"$schema": "http://json-schema.org/draft-07/schema#",
"type": "object",
"javaType": "com.walmart.services.tesseract.service.request.models.inkiru.PaymentHead",
"properties": {
"payments": {
"type": "array",
"items": [
{
"type": "object",
"properties": {
"paymentHandle": {
"type": "string"
},
"txndate ": {
"type": "string"
},
"ordernumber": {
"type": "string"
},
"stgOrderNumber": {
"type": "string"
}
}
}
]
}
}
}
Esto genera el siguiente POJO
@JsonInclude(JsonInclude.Include.NON_NULL)
@JsonPropertyOrder({
"payments"
})
public class PaymentHead {
@JsonProperty("payments")
private List<Object> payments = new ArrayList<Object>();
@JsonProperty("payments")
public List<Object> getPayments() {
return payments;
}
@JsonProperty("payments")
public void setPayments(List<Object> payments) {
this.payments = payments;
}
@Override
public String toString() {
StringBuilder sb = new StringBuilder();
sb.append(PaymentHead.class.getName()).append('@').append(Integer.toHexString(System.identityHashCode(this))).append('[');
sb.append("payments");
sb.append('=');
sb.append(((this.payments == null)?"<null>":this.payments));
sb.append(',');
if (sb.charAt((sb.length()- 1)) == ',') {
sb.setCharAt((sb.length()- 1), ']');
} else {
sb.append(']');
}
return sb.toString();
}
}
Sin embargo, en lugar de objeto, que debe ser tipoCompuesto. No lo es? ¿Me estoy perdiendo de algo?
Madhur Ahuja:
El esquema correcto debería ser. Tenga en cuenta que los elementos es un objeto en el esquema, no matriz.
{
"$schema": "http://json-schema.org/draft-07/schema#",
"type": "object",
"javaType": "com.walmart.services.tesseract.service.request.models.inkiru.PaymentHead",
"properties": {
"payments": {
"type": "array",
"items":
{
"type": "object",
"properties": {
"paymentHandle": {
"type": "string"
},
"txndate ": {
"type": "string"
},
"ordernumber": {
"type": "string"
},
"stgOrderNumber": {
"type": "string"
}
}
}
}
}
}