Json解析问题(值自动更改浮点数)

时间:2016-03-15 08:46:00

标签: java android json

您好我在下面提到了我的json格式

[{
    "id": "1",
    "MinValue": 2,
    "MaxValue": 29
}, {
    "id": "2",
    "MinValue": 0.5,
    "MaxValue": 5.6
}]

我在解析MinValue& MaxValue的回报如2.0,29.0(浮动) 请帮助我获得确切的价值。

我的解析代码

JSONArray jsonArray = new JSONArray(result);

if (jsonArray != null) {
    for (int i = 0; i < jsonArray.length(); i++) {
        try {
            JSONObject profileObject = jsonArray.getJSONObject(i);
            String minValue = profileObject.getString(Constants.VALUE_BMCPROFILE_MINVALUE);
            String maxValue = profileObject.getString(Constants.VALUE_BMCPROFILE_MAXVALUE);
        }
    }
}

4 个答案:

答案 0 :(得分:1)

将其替换为

String minValue = profileObject.getString(Constants.VALUE_BMCPROFILE_MINVALUE);
String maxValue = profileObject.getString(Constants.VALUE_BMCPROFILE_MAXVALUE);

double minValue = profileObject.getDouble(Constants.VALUE_BMCPROFILE_MINVALUE, 0);
double maxValue = profileObject.getDouble(Constants.VALUE_BMCPROFILE_MAXVALUE, 0);

根据json数据,min和max值显然是Double not String。

答案 1 :(得分:0)

您可以从JSON获取双倍值,然后根据需要删除.0

DecimalFormat decimalFormat=new DecimalFormat("#.#");
double minValue = decimalFormat.format(profileObject.getDouble(Constants.VALUE_BMCPROFILE_MINVALUE));
double maxValue = decimalFormat.format(profileObject.getDouble(Constants.VALUE_BMCPROFILE_MAXVALUE));

答案 2 :(得分:0)

这样的事情应该有效

JSONArray jsonArray = new JSONArray(result);

if (jsonArray != null) {
    for (int i = 0; i < jsonArray.length(); i++) {
        try {
            JSONObject profileObject = jsonArray.getJSONObject(i);

            Object minValue = profileObject.get(Constants.VALUE_BMCPROFILE_MINVALUE);
            if (minValue instanceof Integer) {
                int min = (int) minValue;
            } else if (minValue instanceof Double) {
                double min = (double) minValue;
            }

            Object maxValue = profileObject.get(Constants.VALUE_BMCPROFILE_MAXVALUE);
            if (maxValue instanceof Integer) {
                int max = (int) maxValue;
            } else if (maxValue instanceof Double) {
                double max = (double) maxValue;
            }
        } catch (Exception e) {

        }
    }
}

然后继续使用int或double来做你想做的事情

答案 3 :(得分:0)

如果您真的遇到麻烦,那么备用解决方案就是删除.0这样的

   if(MinValue.endsWith(".0")){
         String myMinValue = MinValue.substring(0,MinValue.indexOf('.'))        
    }