2016-02-11 7 views
0

Я создал два точно таких же класса в двух разных пакетах и ​​два разных .jars. com.test загружается глобально (помещается в/lib/ext /) в Tomcat7, а es.package загружается как зависимость портлета.GSON, @SerializedName не учитывается, когда класс загружен в разные области.

import com.google.gson.annotations.SerializedName; 
import java.io.Serializable; 

public class RequestBean implements Serializable { 

    @SerializedName("SOMETHING") 
    private String id; 

    @SerializedName("CUENTA") 
    private String account; 

    public String getAccount() { 
     return account; 
    } 

    public void setAccount(String account) { 
     this.account = account; 
    } 

    public String getId() { 
     return id; 
    } 

    public void setId(String id) { 
     this.id = id; 
    } 
} 

При наличии следующего кода в портлет:

com.test.RequestBean localBean = new com.test.RequestBean(); 
localBean.setAccount("account"); 
localBean.setId("100"); 

es.package.RequestBean globalBean = new es.package.RequestBean(); 
globalBean.setAccount("account"); 
globalBean.setId("100"); 

System.out.println(gson.toJson(localBean, localBean.getClass()).toString()); 
System.out.println(gson.toJson(globalBean, globalBean.getClass()).toString()); 

К моему удивлению, результат отличается. Для globalBean @SerializedName не учитывается. Что может быть причиной? Глобальный класс доступен в глобальной области, а локальный - только для области портлета.

{"SOMETHING":"100","CUENTA":"account"} 
{"id":"100","account":"account"} 

ответ

0

Причина была gson-2.2.0, загружаемая в портлет и gson-3.2.1 в глобальном масштабе. Оставив только глобальный, этот вопрос был исправлен.

Смежные вопросы