2015-05-10 18 views
2

我有一個BigInteger變量,例如chipertextJSON獲取完整數字號碼

println "chipherTotalAmount= "+chipertext 

結果: enter image description here

然後我把它解析爲JSON,結果是

enter image description here

我怎樣才能得到全數字的價值?

這是我的代碼從web應用程序。

def registerItem = RegisterItem.where { 
    (dateReceivedItem >= fromDate && dateReceivedItem < toDate) 
}.list() 

println "registerItem.size = "+registerItem.size() 

for (int x = 0; x < registerItem.size(); x++){ 

    RSA rsa = new RSA() 
    println "x noata .clas = "+registerItem[x].noNota.class 
    // BigInteger plaintext = new BigInteger(registerItem[x].noNota.getBytes()) 

    publickey = new BigInteger(cifuser.publicKey) 
    newn = new BigInteger(cifuser.newn) 
    privatekey = new BigInteger(cifuser.privateKey) 

    BigInteger NoNota = new BigInteger(registerItem[x].noNota.getBytes()); 
    BigInteger chipherNoNota = rsa.encrypt(NoNota, publickey, newn); 
    println "chipherNoNota = "+chipherNoNota 

    def totalmountString = registerItem[x].totalAmount.toString() 
    println "totalmountString = "+totalmountString 
    println "totalmountString = "+totalmountString.class 
    BigInteger TotalAmount = new BigInteger(totalmountString.getBytes()); 
    BigInteger chipherTotalAmount = rsa.encrypt(TotalAmount, publickey, newn); 
    println "chipherTotalAmount = "+chipherTotalAmount 

    BigInteger SenderName = new BigInteger(registerItem[x].senderName.getBytes()); 
    BigInteger chipherSenderName = rsa.encrypt(SenderName, publickey, newn); 
    println "chipherSenderName = "+chipherSenderName 

    registerItem[x].noNota = chipherNoNota.toString() 
    registerItem[x].totalAmount = chipherTotalAmount //i cannot parse this to String because at my domain totalAmount was BigInteger 
    registerItem[x].senderName = chipherSenderName.toString() 
    registerItem[x].discard() 
} 

這是我的域名

class RegisterItem implements Serializable{ 

    String noNota 
    City destination 
    Date dateReceivedItem 

    String senderName 
    String noTelpSender 
    String noHpSender 
    String emailSender 
    String addressSender 
    String descriptionSender 

    String receiverName 
    String noTlpReceiver 
    String noHpReceiver 
    String emailReceiver 
    String addressReceiver 
    String descriptionReceiver 

    String deleteFlag = "N" 

    BigInteger totalAmount 

    String isPay = "Y" 

    String useDefault = "Y" 

    Date dateCreated 
    Date lastUpdated 

    String updatedBy = "" 
    String createdBy 

    static constraints = { 
     noTelpSender(nullable:true,blank:true) 
     noHpSender(nullable:true,blank:true) 
     emailSender(nullable:true,blank:true) 
     addressSender(nullable:true,blank:true) 
     descriptionSender(nullable:true,blank:true) 

     noTlpReceiver(nullable:true,blank:true) 
     noHpReceiver(nullable:true,blank:true) 
     emailReceiver(nullable:true,blank:true) 
     addressReceiver(nullable:true,blank:true) 
     descriptionReceiver(nullable:true,blank:true) 

     createdBy(blank: false, maxSize: 50) 
     lastUpdated(nullable: true) 
    } 

    def beforeInsert = { 
     // createdBy = springSecurityService.principal.username 
     dateCreated = new Date() 
    } 
    def beforeUpdate = { 
     // updatedBy = springSecurityService.principal.username 
     lastUpdated = new Date() 
    } 
} 
+0

將它解析爲'String',這樣你就可以完全控制實際結果,特別是它的BigInteger類型。 –

+0

我不能那樣做,因爲我從grails解析了一個列表域,並且該字段totalAmount是BigInteger – akiong

+0

@Rod_Algonquin查看我的文章的更改 – akiong

回答

1

如果我是你,熱衷於輸少的轉換,我將它解析到String和使用將其作爲一個String

String.valueOf(bigInt); 

bigInt.toString();