使用net.sf.json.JSONObject转jsonObject的问题

发现个诡异问题,就是使用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);字符串

 

缘由具体能够参考:http://leaver.me/2015/11/25/json-lib%E5%8F%8D%E5%BA%8F%E5%88%97%E5%8C%96%E7%B2%BE%E5%BA%A6%E4%B8%A2%E5%A4%B1%E9%97%AE%E9%A2%98/get

相关文章
相关标签/搜索