2016-04-07 13 views
0

Beim Konvertieren eines POJO in eine Json-Darstellung ist meine Ausgabe ziemlich überraschend: leer!Leerer String bei Verwendung von GSON für Java -> JSon

Hier die POJO Klasse:

public class AccountDTO extends BasicDBObject { 

    /** 
    * 
    */ 
    public static final String COLLECTION_NAME = "account-data"; 
    private static final long serialVersionUID = 1L; 
    private String customerFirstName; 
    private String customerLastName; 
    private long customerId; 
    private String IBAN; 
    private float balance; 
    private String accountCurrency; 




    public AccountDTO(Account account, Customer customer) { 
     super(); 
     this.customerFirstName = customer.getFirstname(); 
     this.customerLastName = customer.getLastname(); 
     this.customerId = customer.getCustomerId(); 
     this.IBAN = account.getIBAN(); 
     this.balance = account.getBalance(); 
     this.accountCurrency = account.getAccountCurrency(); 
    } 

    public String getCustomerName() { 
     return customerFirstName; 
    } 
    public void setCustomerName(String customerName) { 
     this.customerFirstName = customerName; 
    } 
    public String getCustomerLastName() { 
     return customerLastName; 
    } 
    public void setCustomerLastName(String customerLastName) { 
     this.customerLastName = customerLastName; 
    } 
    public long getCustomerId() { 
     return customerId; 
    } 
    public void setCustomerId(long customerId) { 
     this.customerId = customerId; 
    } 
    public String getIBAN() { 
     return IBAN; 
    } 
    public void setIBAN(String iBAN) { 
     IBAN = iBAN; 
    } 
    public float getBalance() { 
     return balance; 
    } 
    public void setBalance(float balance) { 
     this.balance = balance; 
    } 
    public String getCustomerFirstName() { 
     return customerFirstName; 
    } 
    public void setCustomerFirstName(String customerFirstName) { 
     this.customerFirstName = customerFirstName; 
    } 
    public String getAccountCurrency() { 
     return accountCurrency; 
    } 
    public void setAccountCurrency(String accountCurrency) { 
     this.accountCurrency = accountCurrency; 
    } 

    @Override 
    public String toString() { 
     return "AccountDTO [customerFirstName=" + customerFirstName + ", customerLastName=" + customerLastName 
       + ", customerId=" + customerId + ", IBAN=" + IBAN + ", balance=" + balance + ", accountCurrency=" 
       + accountCurrency + "]"; 
    } 







} 

Der Konverter:

public abstract class AccountDTODigester { 
      public static String digestJavaToJson(AccountDTO dto){ 
       Gson gson = new Gson(); 
       String json = gson.toJson(dto); 
       return json; 
      } 
    } 

Code mit jackson:

public abstract class AccountDTODigester { 
     public static String digestJavaToJson(AccountDTO dto) throws JsonProcessingException{ 

      ObjectMapper mapper = new ObjectMapper(); 
      String jsonInString = new String(); 
      jsonInString = mapper.writeValueAsString(dto); 
      return jsonInString; 
     } 
} 

Und finnaly den Läufer:

public class DAOTest { 
    AccountDTO accountDTO; 

    @Before 
    public void initialize(){ 
     Account account = new Account("FRkk BBBB BGGG GGCC CCCC CCCC CKK", 0, "euro"); 
     Customer customer = new Customer("XXXXXX", "YYYYYY", 1, account); 
     this.accountDTO = new AccountDTO(account, customer); 
    } 
    @Test 
    public void toJson(){ 
     Assert.assertNotEquals(AccountDTODigester.digestJavaToJson(accountDTO),new String("{}")); 
} 

Console Ausgabe:

AccountDTO [customerFirstName=XXXXXX, customerLastName=YYYYYY, customerId=1, IBAN=FRkk BBBB BGGG GGCC CCCC CCCC CKK, balance=0.0, accountCurrency=euro] 
{} 

Wenn ich den Test, meine JSON-String laufen ist { } und mein Test als nicht bestanden Marke. Gson scheint sehr einfach zu ver zu verwenden, verstehe ich nicht, warum ich diese leere Json bekam stattdessen ein String gefüllt mit einer json Darstellung meines AccountDTO Objekt

Antwort

0

Ok ich gefunden Lösung:

Meine JSON war null weil extends BasicDBObject, scheint die Serialisierung dadurch blockiert.

Noch auf der Suche nach einer besseren Erklärung, aber jetzt ist mein Json in Ordnung.

Verwandte Themen