1

我正在尝试使用 Java 中的 simple.json 读取和解析 json 文件。但是,在浮点数上我得到错误。我应该如何解析浮点数?

JSON 文件如下:

[
  {
    "region":"NF",
    "destination":"d1",
    "source":"s1",
    "time":2003,
    "value":0.1
  },
  {
    "region":"NF",
    "destination":"d2",
    "source":"s2",
    "time":2004,
    "value":0.002
  },
]

我解析它的代码是:

JSONArray jsonArray = (JSONArray)obj;
Iterator<JSONObject> iterator = jsonArray.iterator();

while(iterator.hasNext()){
    JSONObject jsonObject = iterator.next();
    String region = (String) jsonObject.get("region");
    String src = (String) jsonObject.get("source");
    String dst = (String) jsonObject.get("destination");
    long time = (long) jsonObject.get("time");
    long val = (long) jsonObject.get("value");
}
4

3 回答 3

10

如果要存储浮点数,则需要该类型的变量,即双精度数。

double val = ((Number)jsonObject.get("value")).doubleValue();

在这种情况下,该方法应该返回java.lang.Numberget()的一个实例。然后您可以调用该方法来存储浮点值。doubleValue()

于 2014-02-11T00:12:03.913 回答
1

在 Java EE 7 中,用于jsonObject.getJsonNumber("key").doubleValue()获取双精度值。

请参阅:https ://docs.oracle.com/javaee/7/api/javax/json/JsonNumber.html

于 2019-01-14T02:03:14.430 回答
0

我猜这个库(我猜它是来自您的标签的json-simpledouble )将数字类型返回为 type 。

Double value = (Double) jsonObject.get("value");

例如(经过测试并使用 json-simple-1.1.1):

String jsonString = "{\"foo\":1.23}";
JSONObject obj = (JSONObject) JSONValue.parse(jsonString);
Double d = (Double) obj.get("foo"); // => 1.23
于 2014-02-11T00:07:55.890 回答