java - 如何将字符串的二维数组转换为 int 类型之一?

标签 java spring

如何将 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/

相关文章:

java - AWS Api Gateway - Java SDK 生成 "Internal error occurred while generating SDK"

java - Selenium 在打开新选项卡时抛出 IndexOutOfBoundsException

java - FileReader 与 FileInputReader。 split 与模式

java - 从数组列表中提取组合字符串

JavaFX 和 Spring - bean 不 Autowiring

java - 在存在 XFF header 的情况下将 `AuthenticationFailureBadCredentialsEvent` 与远程地址关联

java - 如何在运行时更改日志级别而不重新启动 Spring Boot 应用程序

java - Spring框架,如何在不同的项目中加载 session

java - Hazelcast Spring 配置

java - Spring Integration 中的事务感知 POJO