Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/flash/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Json解析问题(值自动更改浮点)_Java_Android_Json - Fatal编程技术网

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

Java Json解析问题(值自动更改浮点),java,android,json,Java,Android,Json,嗨,我在下面提到了我的json格式 [{ "id": "1", "MinValue": 2, "MaxValue": 29 }, { "id": "2", "MinValue": 0.5, "MaxValue": 5.6 }] 当我解析MinValue和MaxValue时,它的返回值类似于2.0,29.0(float) 请帮助我得到确切的价值 我的解析代码 JSONArray jsonArray = new JSONArray(result);

嗨,我在下面提到了我的json格式

[{
    "id": "1",
    "MinValue": 2,
    "MaxValue": 29
}, {
    "id": "2",
    "MinValue": 0.5,
    "MaxValue": 5.6
}]
当我解析MinValue和MaxValue时,它的返回值类似于2.0,29.0(float) 请帮助我得到确切的价值

我的解析代码

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);
        }
    }
}
JSONArray JSONArray=新的JSONArray(结果);
if(jsonArray!=null){
for(int i=0;i
将其替换为

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


根据json数据,最小值和最大值显然是双精度值,而不是字符串。

您可以从
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));

像这样的东西应该有用

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) {

        }
    }
}
JSONArray JSONArray=新的JSONArray(结果);
if(jsonArray!=null){
for(int i=0;i

然后继续使用int或double执行您想要的操作

如果您确实遇到了问题,那么另一种解决方案是像这样删除
.0

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

0.2还是2.0?大的difference@TimCastelijns是的,我想没有什么不同的数字是29到29.0那么是哪一个呢?0.2或2.0?
29.0
29
的精确值,它可能是一个
double
,而不是
float
@rameshtangaraj您能提供一些关于答案的反馈意见吗,让我们知道它是否有效等等。现在你有5个人在努力帮助你,所有分数00.5和5.6肯定不是整数,用getInt检索它们将失去精度抱歉,我的错。。更新这是为了避免问题,真正的解决办法是首先不将其存储在字符串中。我可以知道为什么会发生此问题吗?Min和Max仅为字符串值我已测试了您在上面提供的相同JSON,但结果是正确的。@RameshThangaraj这是另一种解决方案,如果Tim Castelijns的逻辑不起作用,那么您可以应用它。这将删除
.0
后缀,并给出正确的整数。
   if(MinValue.endsWith(".0")){
         String myMinValue = MinValue.substring(0,MinValue.indexOf('.'))        
    }