作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试使用以下代码从 URL 获取数据并将其存储为 json 格式:
String fullURL="http://XXX:8101/Myapp/XXX/XXX";
URL u = new URL(fullURL);
System.out.println(fullURL);
HttpURLConnection huc = (HttpURLConnection) u.openConnection();
System.out.println("Message :"+huc.getResponseMessage());
JSONParser parser = new JSONParser();
BufferedReader rd = new BufferedReader(new InputStreamReader(huc.getInputStream()));
JSONArray a = (JSONArray) parser.parse(rd);
for (Object o : a)
{
org.json.simple.JSONObject device = (org.json.simple.JSONObject) o;
double kw = (double) device.get("value");
System.out.println(kw);
//getKw().setKw(kw);
String sensortype = (String) device.get("senorType ");
System.out.println(sensortype);
//getSensorType().setSenorType(sensortype);
Timestamp dateTime = (Timestamp) device.get("serverTimeStamp");
System.out.println(dateTime);
//getServerTimeStamp().setServerTimeStamp(dateTime);
}
但是我收到以下错误:
java.lang.ClassCastException: org.json.simple.JSONObject cannot be cast to org.json.simple.JSONArray.
我做错了什么以及如何解决这个问题?
我根据用户评论进行了更改,最后我的数组是:
[
{
"value": 777,
"percentage": 0,
"serverTimeStamp": 1436900289000,
"sensorType": "S"
},
{
"value": 777,
"percentage": 0,
"serverTimeStamp": 1436900289000,
"sensorType": "V"
},
{
"value": 777,
"percentage": 0,
"serverTimeStamp": 1436900289000,
"sensorType": "R"
}
]
为什么我会收到 java.lang.ClassCastException: java.lang.Long 无法转换为 java.lang.Double 异常?
最佳答案
查看代码后,您尝试将值转换为 double
,这是错误
,您将在 状态下得到
当尝试从 long
>doubleJSONObject
获取键 "value"
的值时。要获得所需的结果,首先将其转换为 long
并然后在double
中。
double kw = (double)((long) device.get("value"));
我观察到的另一件事是,您试图将键 "serverTimeStamp"
的值转换为 Timestamp
,这是错误的
,说明您将会变得long
,您必须创建新的 Timestamp 实例。
Timestamp dateTime = new Timestamp ((long) device.get("serverTimeStamp"));
关于java - 如何从URL获取数据并将其转换为json?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33820609/
我是一名优秀的程序员,十分优秀!