發現個詭異問題,就是使用net.sf.json.JSONObject來將字符串對象轉換成jsonObject時,對於數值類型的屬性,一些特殊的數值在轉換過程當中會被改變,因此在使用json格式報文進行交易時,像金額這種數值類型的屬性,也應該使用字符串類型進行傳遞,這樣才能安全穩定。json
import net.sf.json.JSONObject;安全
public static void main(String[] args) {
String data = "{\"request\":{\"body\":{\"amt\":163000.24,\"prjCode\":\"BA2016052500000015\",\"opType\":\"1\"},\"head\":{\"messageSn\":\"bea4b5b4ec83444eaab19e0634937ca1\",\"reqTime\":\"20351102105013139\",\"sysCode\":\"pbnc\",\"txCode\":\"2004\",\"version\":\"100\"}}}";
JSONObject jsonObject = JSONObject.fromObject(data);
System.out.println(jsonObject.toString());
}對象
另外還有一些方法就是:ci
一、json-lib.jar降級到2.3
二、重寫net.sf.json.util.JSONTokener的417行,改爲 return NumberUtils.createBigDecimal(s);字符串