Json 到 Java 对象 - 由于字段相同而失败

我正在尝试将 json 转换为 java 对象。由于 json 中有相同的字段,因此会抛出这样的错误。


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)

这是 json(与我的问题相关的部分)


   "order":{  

      "amount":1.000,

      "chargeback":{  

         "amount":0,

         "currency":"BHD"

      },

   }

这是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;

    }  

}

请注意,Chargeback 类位于 Order.java 文件中。


我已经尝试@JsonIgnore注释并删除类amount中的,chargeback但仍然存在错误。有人可以为此提出解决方案吗?


红颜莎娜
浏览 270回答 1
1回答

潇潇雨雨

我修改了你的代码,试试下面的代码。基本上,我做了以下几件事。Order 内部没有 Chargeback 对象的 getter 和 setter,所以添加了。注释掉 @JsonIgnore 注释。课程如下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;      }    }    public class Order {      private double amount;      Chargeback ChargebackObject;      public double getAmount() {        return amount;      }      public void setAmount(double amount) {        this.amount = amount;      }      public Chargeback getChargebackObject() {        return ChargebackObject;      }      public void setChargebackObject(Chargeback chargebackObject) {        ChargebackObject = chargebackObject;      }    }下面给出了用于测试生成 Json 的代码。public class Test1 {  public static void main(String[] args) throws Exception {    Chargeback chargeback = new Chargeback();    chargeback.setAmount(1234.00);    chargeback.setCurrency("BHD");    Order order = new Order();    order.setAmount(2345.00);    order.setChargebackObject(chargeback);    ObjectMapper mapper = new ObjectMapper();    String toJson = null;    try {      toJson = mapper.writerWithDefaultPrettyPrinter().writeValueAsString(order);    } catch (IOException e) {      e.printStackTrace();    }    System.out.println("Complete Json = " + toJson);// From Json String to Java ObjectObjectMapper mapper1 = new ObjectMapper();Order order1 = mapper.readValue(toJson, Order.class);System.out.println("Order Object -> " + order1);  }}下面给出生成json。{  "amount" : 2345.0,  "chargebackObject" : {    "amount" : 1234.0,    "currency" : "BHD"  }}
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java