向JsonArray中新增字符串时出现嵌套数组该如何解决
错误原因
你调用Json.createArrayBuilder().add(existingArray)时,add方法会将传入的JsonArray整体作为单个元素插入新数组,而非将原数组内的元素逐个追加,因此最终生成了嵌套的二维数组,不符合预期。
解决方法
通用兼容写法(适配所有Java JSON Processing API版本)
遍历已有JsonArray的所有元素,逐个添加到新的数组构建器中:
String group1 = "#group-apiTest1"; JsonArray existingArray = ["#group-apiTest2","#group-apiTest3","#group-apiTest4"]; //仅为示例写法 JsonArrayBuilder tagArrayBuilder = Json.createArrayBuilder().add(group1); // 遍历已有数组元素逐个追加 for (JsonValue item : existingArray) { tagArrayBuilder.add(item); } JsonObject jsonRequest = Json.createObjectBuilder() .add("tags", tagArrayBuilder.build()) .build(); logger.info("REQUEST - {}", jsonRequest);
简洁写法(适配Java EE 8+/Jakarta JSON Processing 1.1及以上版本)
直接调用addAll方法展开已有数组的所有元素追加:
String group1 = "#group-apiTest1"; JsonArray existingArray = ["#group-apiTest2","#group-apiTest3","#group-apiTest4"]; //仅为示例写法 JsonObject jsonRequest = Json.createObjectBuilder() .add("tags", Json.createArrayBuilder() .add(group1) .addAll(existingArray) .build()) .build(); logger.info("REQUEST - {}", jsonRequest);
注意:add(JsonArray)是将数组作为单个元素插入,addAll(JsonArray)才是展开插入数组内的所有元素
内容的提问来源于stack exchange,提问作者Harsh Gupta
相关产品推荐
相关产品推荐

