java - “errorMessage”:“java.lang.Integer 不能转换为 java.lang.Double”
问题描述
我在这里有这段代码要部署在 AWS 上。我在 AWS 上的测试问题如下:
当我将值传递给 x 时,如下所示:
"x": 1.0 or "x": 100.0 ....etc (小数部分为零) 它被视为整数并且错误说 "errorMessage": "java.lang.Integer cannot be cast to java.lang.Double"在这一行 x_Ptr[i] = str.get(i).doubleValue();
如果 x 通过像 "x": 1.5 或 "x":0.444 这样的分数,它可以工作
这里有什么建议吗?
public class Handler implements RequestHandler<Map<String, Object>, ApiGatewayResponse> {
private static final Logger LOG = Logger.getLogger(Handler.class);
@Override
public ApiGatewayResponse handleRequest(Map<String, Object> event, Context context) {
LOG.info("received: " + event);
List<Double> str = new ArrayList<Double>();
str = (ArrayList<Double>)(event.get("x"));
double[] x_Ptr = new double[str.size()];
for (int i = 0; i < x_Ptr.length; i++) {
x_Ptr[i] = str.get(i).doubleValue();
}
System.out.println(x_Ptr[0]);
Map<String, String> headers = new HashMap<>();
headers.put("Content-Type", "application/json");
Output bodyout = new Output(x_Ptr);
return ApiGatewayResponse.builder()
.setStatusCode(200)
.setObjectBody(bodyout)
.setHeaders(headers)
.build();
}
}
解决方案
为输入类型定义一个 POJO,问题是反序列化时类型信息不可用,它是从数据中推断出来的。
class MyPojo {
List<Double> x;
}
public class Handler implements RequestHandler<MyPojo, ApiGatewayResponse> {
private static final Logger LOG = Logger.getLogger(Handler.class);
@Override
public ApiGatewayResponse handleRequest(MyPojo event, Context context) {
// event.x is now a list of doubles
}
}
推荐阅读
- css - Bootstrap 类不能在带有 auth 模块的 Laravel 8 视图中运行
- c# - 如何在 LINQ 中合并 GroupBy 的结果
- apache-kafka - Kafka 流加入性能
- javascript - 如何正确调用 useFetch 自定义钩子
- r - R:遍历for循环以打印多个表
- sql - 从 oracle-sql 中的时间戳日期列中提取日期
- visual-studio-code - 未知与代码插件
- java - 无法对非静态字段消息进行静态引用 ..int randomNumber=r.nextInt(message.length);
- c# - 如何在桶聚合中进行过滤聚合?
- reactjs - 反应应用程序中的npm错误cb()是什么意思