有關fastjson輸出的時候double不輸出後面.0的問題

葬愛殺馬特貴族發表於2015-11-24

最近用fastjson遇到一個很糾結的問題
當用JSON.toJSONString要列印{id:1.0}的時候fastjson會列印{id:1}
後面的.0就這麼被他給剪了

追蹤原始碼發現在
com.alibaba.fastjson.serializer.DoubleSerializer的write方法中會有這麼一段程式碼

            doubleText = Double.toString(doubleValue);
            if (doubleText.endsWith(".0")) {
                doubleText = doubleText.substring(0, doubleText.length() - 2);
            }

不知道作者的用意是什麼,但是這個.0小弟需要他顯示出來

解決方法如下:

    JSONObject js2 = new JSONObject();
    js2.put("dou", 1.0);
    ValueFilter filter = new ValueFilter() {
        @Override
        public Object process(Object object, String name, Object value) {
            if (value instanceof BigDecimal || value instanceof Double || value instanceof Float) {
                return new BigDecimal(value.toString());
            }
            return value;
        }
    };
   String str = JSON.toJSONString(js2, filter, new SerializerFeature[0]);

相關文章