J'essaie de convertir un json en un objet java. Comme il y a des champs identiques dans le json, il y a une erreur comme celle-ci.
com.fasterxml.jackson.databind.JsonMappingException: Conflicting setter definitions for property "amount":
com.gateway.model.Order#setAmount(1 params) vs com.gateway.model.Order#setAmount(1 params)
Voici le json (partie liée à mon problème)
"order":{
"amount":1.000,
"chargeback":{
"amount":0,
"currency":"BHD"
},
}
C'est la partie pertinente de la classe Java.
public class Order
{
private double amount;
Chargeback ChargebackObject;
// Getter Methods
public double getAmount()
{
return amount;
// Setter Methods
public void setAmount(double amount)
{
this.amount = amount;
}
}
class Chargeback
{
private double amount;
private String currency;
// Getter Methods
@JsonIgnore
public double getAmount()
{
return amount;
}
@JsonInclude(Include.NON_NULL)
public String getCurrency()
{
return currency;
}
// Setter Methods
public void setAmount(double cb_amount)
{
this.amount = cb_amount;
}
public void setCurrency(String currency)
{
this.currency = currency;
}
}
Veuillez noter que la classe Chargeback se trouve dans le fichier Order.java.
J'ai essayé @JsonIgnore
et en supprimant l'annotation amount
dans le chargeback
mais l'erreur persiste. Quelqu'un peut-il suggérer une solution à ce problème ?
2 votes
Il semble que vous ayez deux méthodes avec le même nom (
setAmount
) entre ces deux classes ; vous devez renommer l'une des propriétés ou indiquer à Jackson laquelle est laquelle. Essayez de renommer votre montant de commande en "quantité" et setAmount en setQuantity, puisque cela exprime mieux ce que vous essayez d'accomplir de toute façon.0 votes
@AustinSchäfer C'était exactement le cas. Il s'agissait d'une classe énorme avec beaucoup de variables et de méthodes, et je ne sais comment, je l'ai manqué. Merci de me l'avoir signalé :)