如何将API返回的二维数组格式字符串转换为Java数组?
解决API返回字符串转Java数组的问题
步骤1:修复不标准的JSON格式
你拿到的字符串存在末尾多余逗号的问题(比如第一个子数组的"1.28210000",和第二个子数组的"0"后面的逗号),这不符合标准JSON规范,会导致解析失败。可以先通过字符串替换处理:
String apiResponse = "你的API返回字符串"; // 替换掉数组元素末尾的逗号(匹配 ",]" 或 ",\n]" 这类情况) String validJson = apiResponse.replaceAll(",\\s*]", "]");
步骤2:用Jackson解析为Java数组
Jackson是Java常用的JSON解析库,先确保项目中引入依赖(Maven为例):
<dependency> <groupId>com.fasterxml.jackson.core</groupId> <artifactId>jackson-databind</artifactId> <version>2.15.2</version> </dependency>
然后编写解析代码:
import com.fasterxml.jackson.databind.ObjectMapper; public class JsonParser { public static void main(String[] args) throws Exception { String apiResponse = "[[1680373800000,\"1.27860000\",\"1.28210000\",],[1680374700000,\"1.27610000\",\"1.28000000\",\"0\"]]"; String validJson = apiResponse.replaceAll(",\\s*]", "]"); ObjectMapper mapper = new ObjectMapper(); // 解析为Object二维数组,也可以根据需求定义具体类型的数组 Object[][] result = mapper.readValue(validJson, Object[][].class); // 输出测试 for (Object[] row : result) { for (Object item : row) { System.out.print(item + " "); } System.out.println(); } } }
步骤3:用Gson解析的替代方案
如果习惯用Gson,同样先处理JSON格式,再解析:
依赖(Maven):
<dependency> <groupId>com.google.code.gson</groupId> <artifactId>gson</artifactId> <version>2.10.1</version> </dependency>
解析代码:
import com.google.gson.Gson; public class GsonParser { public static void main(String[] args) { String apiResponse = "[[1680373800000,\"1.27860000\",\"1.28210000\",],[1680374700000,\"1.27610000\",\"1.28000000\",\"0\"]]"; String validJson = apiResponse.replaceAll(",\\s*]", "]"); Gson gson = new Gson(); Object[][] result = gson.fromJson(validJson, Object[][].class); // 测试输出 for (Object[] row : result) { for (Object item : row) { System.out.print(item + " "); } System.out.println(); } } }
说明
- 如果需要更具体的类型(比如把数字转成
Long或Double),可以定义对应的实体类或者使用Long[][]/String[][]等类型来接收,根据实际业务需求调整。 - 修复JSON格式的正则表达式可以适配大多数末尾多余逗号的情况,如果API返回的格式有其他不规范的地方,可能需要调整正则或者手动处理。
内容的提问来源于stack exchange,提问作者Julian Isaac
相关产品推荐
相关产品推荐

