2016-04-07 23 views
0

试图将POJO转换为Json表示形式,我的输出结果令人惊讶:empty使用GSON for Java时出现空字符串 - > JSon

这里POJO类:

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







} 

转换器:

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

代码与杰克逊:

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

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

控制台输出:

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

当我运行测试,我的JSON字符串是{ }和我的测试是标记为失败。 GSON似乎为版本非常好用,我不明白为什么我得到了这个空的Json而不是充满了我的AccountDTO对象的JSON表示

回答

0

好,我发现了一个字符串的解决方案:

我的JSON为空因为extends BasicDBObject,序列化似乎被这个阻塞了。

仍在寻找更好的解释,但现在我的json没问题。