有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java很简单。json提取浮点

我一直试图从JSON中读取值,但无法提取浮点变量

在这个例子中,我试图提取第一个值(23.21),但我得到了一个错误

java.lang.ClassCastException: class java.lang.Double cannot be cast to class java.lang.Float (java.lang.Double and java.lang.Float are in module java.base of loader 'bootstrap')

然后,当我试图提取第二个值(58)时,我得到了另一个错误

java.lang.ClassCastException: class java.lang.Long cannot be cast to class java.lang.Double (java.lang.Long and java.lang.Double are in module java.base of loader 'bootstrap')

你有解决办法吗?我想把我的值提取为浮点变量

public class testJSON {

    public static void main(String[] args) {

        String inputJson = "{\"AP_ID\":\"123456\",\"PI_ID\":\"12\",\"values\":[{\"type\":\"Temperature\",\"value\":23.21},{\"type\":\"Luminosity\",\"value\":58}]}";

        JSONParser parser = new JSONParser();
        try {
            JSONObject json = (JSONObject) parser.parse(inputJson);

            String AP_ID = (String) json.get("AP_ID");
            String PI_ID = (String) json.get("PI_ID");
            JSONArray values = (JSONArray) json.get("values");

            values.forEach( value -> extractValue((JSONObject) value, AP_ID, PI_ID));

        }catch (ParseException e) {
            e.printStackTrace();
        }
    }

    private static void extractValue(JSONObject value, String AP_ID, String PI_ID){

        String type = (String) value.get("type");
        System.out.println(type);
        System.out.println(value.get("value"));

        var readValue = (float) value.get("value");

        InputValue inputValue = new InputValue(readValue, AP_ID, type, PI_ID);

    }

}

共 (0) 个答案