2016-09-21 64 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 ,我已根据您的需要更新了代码。 –