如何将 String 类型的 double 组转换为 int 类型的 double 组?
@PostMapping("/hole/coordinate")
@ResponseBody
public String saveCoordinate(@RequestBody Map<String, Object> params) {
System.out.println("params = " + params);
System.out.println("params = " + params.get("coordinate"));
return "success";
}
System.out.println(params.get("coordinate"));
存储
[[445, 292], [585, 331], [612, 223], [205, 532]]
double 数组有 m 2 个元素。
例如)[a,b],[c,d].....m
这时候我想接收的结果是int[][]的数据类型,而不是String。
我想知道如何将 String 转换为 int[][]。
我试过如下
int[] arr= Stream.of(str.replaceAll("[\\[\\]\\, ]", "").split("")).mapToInt(Integer::parseInt).toArray();
for (int i : arr) {
System.out.println("i = " + i);
}
但它给了我
4
4
5
2
9
2
...
最好的问候!
最佳答案
您可以像其他答案一样手动解析它,但由于您使用的是 spring
,因此您应该使用它提供的工具。
Spring默认使用jackson的ObjectMapper
进行序列化和反序列化。这种类型的 bean 是为您预先配置的,您可以在 Controller 方法中 Autowiring 它并使用它。那么整个解析是这样的:
int[][] parsedCoordinates = objectMapper.readValue(coordinates, int[][].class);
您的 Controller 方法如下所示:
@PostMapping("/hole/coordinate")
@ResponseBody
public String saveCoordinate(@RequestBody Map<String, Object> params, ObjectMapper objectMapper) {
System.out.println("params = " + params);
System.out.println("params = " + params.get("coordinate"));
//get string from your params
String coordinates = "[[445, 292], [585, 331], [612, 223], [205, 532]]";
int[][] parsedCoordinates;
try {
parsedCoordinates = objectMapper.readValue(coordinates, int[][].class);
} catch (JsonProcessingException exc) {
//that's a bad way to handle error, but it's an example
//you might return error message like - invalid coordinate format
//or whatever you need
exc.printStackTrace();
throw new RuntimeException(exc);
}
//printing parsed result to check it
for (int i = 0; i < parsedCoordinates.length; i++) {
int[] inner = parsedCoordinates[i];
for (int j = 0; j < inner.length; j++) {
System.out.printf("pos %d-%d, value %d%n", i, j, parsedCoordinates[i][j]);
}
}
return "success";
}
关于java - 如何将字符串的二维数组转换为 int 类型之一?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/71030434/