java - 如何从URL获取数据并将其转换为json?

标签 java json

我正在尝试使用以下代码从 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 >double 当尝试从 JSONObject 获取键 "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/

相关文章:

java - 仅在方法期间激活 JProgressBar

java - 鼠标悬停操作在演示网站的 selenium webdriver 中不起作用

sharepoint-2010 - Sharepoint 服务器的 Java api

java - 使用 Jackson 注解从 JSON 转换

python - python中具有相同键的字典

java - 有没有办法摆脱重音符号并将整个字符串转换为常规字母?

java - 使用 Spring 时如何抑制 checkstyle 消息 "Utility classes should not have a public of default constructor"

json - 在 AWS Cloudformation 中传递资源名称的标签键和值

java - Jackson 对象上的 setter 重载

java - JSON 文件 - Java : editing/updating fields values