2016-04-07 25 views
0

Bir POJO'yu bir Json temsiline dönüştürmeye çalıştığımda, çıktısı oldukça şaşırtıcı: boş! İşteJava için GSON kullanırken boş dize -> JSon

POJO sınıfı:

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 + "]"; 
    } 







} 

dönüştürücü: jackson ile

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

Kodu:

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; 
     } 
} 

Ve koşucu finnaly:

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("{}")); 
} 

Konsol çıkışı: Testi çalıştırdığınızda

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

, benim json dize { } ve başarısız olarak benim test işaretidir. Ben bu boş Json var buldum Tamam

cevap

0

benim AccountDTO nesnenin bir json gösterimi ile dolu yerine String neden GSON kullanımı çok kolay ver için görünüyor anlamıyorum çözüm:

Benim JSON boş oldu Çünkü extends BasicDBObject, serileştirme bunun tarafından sıkışmış gibi görünüyor.

Hala daha iyi bir sonuç arıyoruz ama şimdi json'um tamam.