2016-09-21 93 views
0

我得到以下錯誤,我需要處理NumberFormationException或NaN爲BigDecimal

com.google.gson.JsonSyntaxException: java.lang.NumberFormatException: Infinite or NaN 

當我給Json request: {"sendAmt" : ""} 並存儲JSON對象使用 gson.fromJson(inputStreamReader,msgClass)

注意一些其他的對象sendAmt是BigDecimal類型。

我嘗試使用註冊TypeAdapters的gson builder,但我無法解決這個問題。

+0

你怎麼能指望' 「」'被解析成'BigDecimal'? –

回答

0

我已經使用TypeAdapterBigDecimal數據類型嘗試過gson builder。它工作正常。

這裏是我的TypeAdapter代碼:

builder.registerTypeAdapter(BigDecimal.class, new TypeAdapter<BigDecimal>() { 
    @Override 
    public BigDecimal read(JsonReader reader) throws IOException { 
    JsonToken token = reader.peek(); 
    if (token == JsonToken.STRING) { 
     String stringNum = reader.nextString(); 
     if (stringNum == null || stringNum.isEmpty()) { 
     return null; 
     } else { 
     return new BigDecimal(stringNum); 
     } 
    } else if(token == JsonToken.NUMBER) { 
     return new BigDecimal(reader.nextInt()); 
    } else { 
     reader.skipValue(); 
     return null; 
    } 
    } 

    @Override 
    public void write(JsonWriter writer, BigDecimal num) throws IOException { 
    } 
}); 
+0

我試過了,但是它向我顯示這個錯誤:java.lang.IllegalStateException:懸掛名稱:bigdecimalVariable – Subhani007

+0

這裏是我的代碼:[Click](https://github.com/SubhaniSk7/Error.git) – Subhani007

+0

Hey ,我已根據您的需要更新了代碼。 –