GSON java.lang.IllegalArgumentException:class' xx'声明名为' XX'的多个JSON字段。和StackOverflowError

时间:2014-07-18 08:22:08

标签: java json gson

我想将映射到非常复杂的Object的sqlResult转换为JSON,以便将其保存到redis数据库中。现在我得到了错误

java.lang.IllegalArgumentException: class 'xx' declares multiple JSON fields named 'XX'

如果不按照错误' xx'中提到的类进行操作,如何解决此问题? 或者是其他可用的库,它们支持将对象转换为JSON和从JSON转换对象,并支持多个JSON字段名称,例如JSON-IO?


我使用以下建议的类 class A declares multiple JSON fields 更新了我的项目,以避免多个JSON字段。

但现在我又遇到了另一个问题 嵌套异常是:java.lang.StackOverflowError 对该问题的任何建议?因为我使用非常大的集合/对象进行转换。

1 个答案:

答案 0 :(得分:9)

您没有发布非常详细的问题,所以我希望这会对您有所帮助:

您可能遇到的问题是该字段已存在于您扩展的类中。在这种情况下,该字段已存在于B类中。

说:

public class A extends B {
    private BigDecimal netAmountTcy;
    private BigDecimal netAmountPcy;   
    private BigDecimal priceTo;  
    private String segment;

    private BigDecimal taxAmountTcy;
    private BigDecimal taxAmountPcy;   
    private BigDecimal tradeFeesTcy;
    private BigDecimal tradeFeesPcy;

// getter and setter for the above fields

}

其中B类似的(当然可能更重复):

public class B {
    private BigDecimal netAmountPcy;   
// getter and setter for the above fields

}

只需删除字段" netAmountPcy" A类,你仍然会有这个字段(因为它扩展了类)。