JSONObject 的字符串数字转换成 BigDecimal

时间:2025-03-27 10:44:14

/**
 * json 相关工具类
 *
 * @author
 * @version 1.0.0
 * Created at 2021/4/2 11:09
 */
public class JsonUtils {
    /**
     * 功能描述: 将 JsonObj 中 Stirng 数字 转成 BigDecimal类型
     * @author:
     * Created at 2021/4/2 11:07
     */
    public static void s2BigDecimalFromJsonObj(JSONObject sourceData) {
        for (Object o : ()) {
            if ((o) instanceof JSONObject) {
                s2BigDecimalFromJsonObj((JSONObject) (o));
            } else if ((o) instanceof String) {
                if (isNumeric((String) (o))) {
                    (o, new BigDecimal((String) (o)));
                }
            }else if ((o) instanceof JSONArray){
                s2BigDecimalFromJsonArr((JSONArray) (o));
            }
        }
    }

    private static void s2BigDecimalFromJsonArr(JSONArray jsonArray){
        for (Object o : jsonArray) {
            if (o instanceof JSONObject){
                s2BigDecimalFromJsonObj((JSONObject) o);
            } else if (o instanceof JSONArray) {
                s2BigDecimalFromJsonArr((JSONArray) o);
            }
        }
    }

    /**
     * 功能描述: 判断该 字符串是否可以转换成数字
     * @author:
     * Created at 2021/4/2 11:08
     */
    public static boolean isNumeric(String str) {
        //如果是数字,创建new BigDecimal()时肯定不会报错,那就可以直接返回true
        String bigdecimal;
        try {
            bigdecimal= new BigDecimal(str).toString();
        } catch (Exception e) {
            return false;//异常 说明包含非数字。
        }
        return true;
    }
}