如何将嵌套数组格式的字符串参数转换为一维整数数组
实现方案
通用思路
核心分为两步处理:
- 先将字符串格式的嵌套数组反序列化为对应语言原生的嵌套数组/集合对象
- 对得到的嵌套结构做扁平化处理,最终输出一维整数数组
主流语言实现示例
JavaScript 实现
const inputStr = "[[201], [511], [3451]]"; // 第一步:反序列化字符串为嵌套数组 const nestedArr = JSON.parse(inputStr); // 第二步:数组扁平化,嵌套层级更深可以传参数Infinity const flatArr = nestedArr.flat(); console.log(flatArr); // 输出 [201, 511, 3451]
Python 实现
import json input_str = "[[201], [511], [3451]]" # 第一步:反序列化字符串为嵌套列表 nested_arr = json.loads(input_str) # 第二步:列表推导式完成扁平化 flat_arr = [num for sublist in nested_arr for num in sublist] print(flat_arr) # 输出 [201, 511, 3451]
如果需要处理任意深度的嵌套,可以用递归或者itertools.chain工具完成。
Java 实现
import com.fasterxml.jackson.core.type.TypeReference; import com.fasterxml.jackson.databind.ObjectMapper; import java.util.List; import java.util.stream.Collectors; public class ArrayConvert { public static void main(String[] args) throws Exception { String inputStr = "[[201], [511], [3451]]"; ObjectMapper mapper = new ObjectMapper(); // 第一步:反序列化字符串为嵌套List List<List<Integer>> nestedList = mapper.readValue(inputStr, new TypeReference<List<List<Integer>>>() {}); // 第二步:流处理完成扁平化 List<Integer> flatList = nestedList.stream() .flatMap(List::stream) .collect(Collectors.toList()); System.out.println(flatList); // 输出 [201, 511, 3451] } }
不想引入第三方JSON库的场景,可以替换为JDK内置的javax.json包完成解析,后续逻辑一致。
注意:如果输入字符串存在格式不符合JSON规范的情况,需要先做格式校验或者增加异常捕获逻辑,避免反序列化直接报错。
内容的提问来源于stack exchange,提问作者Warden
相关产品推荐
相关产品推荐

