Java Json解析问题(值自动更改浮点)
嗨,我在下面提到了我的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);
[{
"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('.'))
}