后端把Long類型的數據傳給前端,前端可能會出現精度丟失的情況。例如:201511200001725439這樣一個Long類型的整數,傳給前端后會變成201511200001725440。
解決方法:
方法一:在后台將這個Long類型的字段轉換成String類型的,風險比較大。
方法二:使用fastjson的提供的注解,@JSONField(serializeUsing= ToStringSerializer.class)。
備注:
fastjson在com.alibaba.fastjson.serializer包下面提供了多種數據類型轉換的注解。
自己也可以拓展這些注解,通過實現ObjectSerializer接口來完成。
ToStringSerializer的代碼:
public class ToStringSerializer implements ObjectSerializer { public static final ToStringSerializer instance = new ToStringSerializer(); @Override public void write(JSONSerializer serializer, Object object, Object fieldName, Type fieldType, int features) throws IOException { SerializeWriter out = serializer.out; if (object == null) { out.writeNull(); return; } String strVal = object.toString(); out.writeString(strVal); } }
