Java 如何从json对象获取十进制格式值

Java 如何从json对象获取十进制格式值,java,android,Java,Android,我试图从JSONObject中获取价值。以下是JSONObject中的值 {name: "alice", amount: 2.3} // name (string), amount (decimal) 我对如何从JSONObject获取十进制值感到困惑。这是我的密码。我的代码正确吗?我认为浮点和十进制是不同的。我试图找到它,但没有找到 JSONObject data = new JSONObject(); float myFloatValue = BigDecimal.valueOf(data

我试图从JSONObject中获取价值。以下是JSONObject中的值

{name: "alice", amount: 2.3}
// name (string), amount (decimal)
我对如何从JSONObject获取十进制值感到困惑。这是我的密码。我的代码正确吗?我认为浮点和十进制是不同的。我试图找到它,但没有找到

JSONObject data = new JSONObject();
float myFloatValue = BigDecimal.valueOf(data.getDouble("amount")).floatValue();

……如果您的金额在字符串中(我最好猜它在字符串中,否则您不会尝试将其转换为双倍),请尝试此操作以获得双倍金额。。作为

  double amt = Double.parseDouble(data.getString("amount"));

如果您的金额在字符串中(我最好猜它在字符串中,否则您不会尝试将其转换为双倍),请尝试将其转换为双倍。。作为

  double amt = Double.parseDouble(data.getString("amount"));

下面的代码对我来说非常有用:

String data = "{name: \"alice\", amount: 2.3}"; 
org.json.JSONObject object = new org.json.JSONObject(data);
System.out.println(object.getDouble("amount"));
输出:

run:
2.3
BUILD SUCCESSFUL (total time: 0 seconds)

您忘记将JSON数据字符串放入JSONObject构造函数了吗?

下面的代码对我来说非常有用:

String data = "{name: \"alice\", amount: 2.3}"; 
org.json.JSONObject object = new org.json.JSONObject(data);
System.out.println(object.getDouble("amount"));
输出:

run:
2.3
BUILD SUCCESSFUL (total time: 0 seconds)

您忘记将JSON数据字符串放入JSONObject构造函数了吗?

在Java中,当您键入十进制数3.6时,它被解释为双精度。由于float不如double精确,因此无法隐式执行转换

如果你想创建一个浮点数,你应该以f结尾(即:3.6f)

这个很好用

使用setter和getter创建一个POJO类(MyData)。这是更好的方法

public class MyData{
private String name;
private Double amount;
public String getName() {
    return name;
}
public void setName(String name) {
    this.name = name;
}
public Double getAmount() {
    return amount;
}
public void setAmount(Double amount) {
    this.amount = amount;
}
}
在您的方法中写入此块:

ObjectMapper mapper = new ObjectMapper();
JSONObject data = new JSONObject(//your jsonObject);
MyData myData = mapper.readValue(data.toString(),MyData.class);
float myFloatValue=(float)myData.getAmount();

现在可以在myFloatValue中使用浮点值

在Java中,当您键入十进制数3.6时,它被解释为双精度。由于float不如double精确,因此无法隐式执行转换

如果你想创建一个浮点数,你应该以f结尾(即:3.6f)

这个很好用

使用setter和getter创建一个POJO类(MyData)。这是更好的方法

public class MyData{
private String name;
private Double amount;
public String getName() {
    return name;
}
public void setName(String name) {
    this.name = name;
}
public Double getAmount() {
    return amount;
}
public void setAmount(Double amount) {
    this.amount = amount;
}
}
在您的方法中写入此块:

ObjectMapper mapper = new ObjectMapper();
JSONObject data = new JSONObject(//your jsonObject);
MyData myData = mapper.readValue(data.toString(),MyData.class);
float myFloatValue=(float)myData.getAmount();
现在可以在myFloatValue中使用浮点值

为什么不简单地
(浮动)数据.getDouble(“金额”)
?为什么不简单地
(浮动)数据.getDouble(“金额”)