Java中无需手动加符号如何将JSON字符串列表转为单个JsonNode
解决方法
你之前的实现问题在于直接拼接多个独立JSON对象字符串得到的内容不符合JSON语法规范,Jackson只会解析第一个匹配的合法JSON结构,因此只返回了第一个元素。
不需要手动处理逗号、括号的最优方案是直接通过Jackson的ArrayNode逐个添加解析后的元素,完全跳过字符串拼接步骤:
List<String> responseList = dao.getDetails(something, something2); // 直接创建数组类型的JsonNode ArrayNode resultArray = mapper.createArrayNode(); for (String row : responseList) { // 逐行解析为JsonNode后添加到数组中 resultArray.add(mapper.readTree(row)); } // 最终需要的JsonNode就是构造好的resultArray jsonNode = resultArray;
该方案同时自带逐行JSON格式校验能力,如果某一行返回的内容不是合法JSON,会直接抛出对应异常,方便定位问题,比批量拼接字符串后再解析的排查成本低很多。
如果确实需要先得到完整的JSON字符串再转JsonNode,也可以用以下方式实现,不需要手动逐个插入逗号:
List<String> responseList = dao.getDetails(something, something2); // 用String.join自动加逗号,前后补数组括号 String jsonStr = "[" + String.join(",", responseList) + "]"; jsonNode = mapper.readTree(jsonStr);
内容的提问来源于stack exchange,提问作者Achoi98
相关产品推荐
相关产品推荐

