我正在尝试使用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");
}
答案 0 :(得分:9)
如果要存储浮点数,则需要该类型的变量,即双精度数。
double val = ((Number)jsonObject.get("value")).doubleValue();
在这种情况下,get()
方法应返回java.lang.Number的实例。然后,您可以调用doubleValue()
方法来存储浮点值。
答案 1 :(得分:0)
我猜这个库(我猜你的标签是json-simple)会将数字类型返回为double
类型。
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
答案 2 :(得分:0)
在Java EE 7中,使用jsonObject.getJsonNumber("key").doubleValue()
获取double值。
请参阅:https://docs.oracle.com/javaee/7/api/javax/json/JsonNumber.html