Java中如何删除JSON文件里ProductCharacteristic的name键值对
在Java中删除JSON里ProductCharacteristic数组对象的name键值对
下面提供两种Java常用JSON库的实现方案:
方案一:使用Jackson库
步骤说明
- 引入Jackson依赖
- 将JSON字符串解析为
JsonNode对象 - 遍历顶层数组,定位到每个对象的
ProductCharacteristic数组 - 遍历该数组内的每个对象,移除
name键 - 将处理后的
JsonNode转回JSON字符串
代码示例
<!-- Maven依赖 --> <dependency> <groupId>com.fasterxml.jackson.core</groupId> <artifactId>jackson-databind</artifactId> <version>2.15.2</version> </dependency>
import com.fasterxml.jackson.databind.JsonNode; import com.fasterxml.jackson.databind.ObjectMapper; import com.fasterxml.jackson.databind.node.ArrayNode; import com.fasterxml.jackson.databind.node.ObjectNode; public class JsonProcessing { public static void main(String[] args) throws Exception { String jsonStr = "[{\"id\": \"0028167072_CO_FIX_INTTV_1008_P3909_IDX0\",\"status\": \"Active\",\"startDate\": \"2023-02-12T22:00:00Z\",\"place\": [{\"id\": \"8\",\"apartment\": \"578\",\"role\": \"QA\",\"@referredType\": \"street\"}],\"ProductCharacteristic\": [{\"id\": \"CH_100473\",\"valueId\": \"CH12_1000374_VALUE04141\",\"value\": \"LTS\",\"name\": \"Computer\"}]}]"; ObjectMapper mapper = new ObjectMapper(); JsonNode rootNode = mapper.readTree(jsonStr); // 遍历顶层数组中的每个对象 if (rootNode.isArray()) { for (JsonNode itemNode : rootNode) { JsonNode characteristicNode = itemNode.get("ProductCharacteristic"); if (characteristicNode != null && characteristicNode.isArray()) { // 遍历ProductCharacteristic数组内的每个对象 for (JsonNode charItem : characteristicNode) { if (charItem.isObject()) { ((ObjectNode) charItem).remove("name"); } } } } } // 输出处理后的JSON String processedJson = mapper.writerWithDefaultPrettyPrinter().writeValueAsString(rootNode); System.out.println(processedJson); } }
方案二:使用Gson库
步骤说明
- 引入Gson依赖
- 用
JsonParser将JSON字符串解析为JsonElement - 遍历顶层数组,找到每个对象的
ProductCharacteristic数组 - 遍历数组内对象,移除
name属性 - 将处理后的
JsonElement转换为格式化的JSON字符串
代码示例
<!-- Maven依赖 --> <dependency> <groupId>com.google.code.gson</groupId> <artifactId>gson</artifactId> <version>2.10.1</version> </dependency>
import com.google.gson.Gson; import com.google.gson.GsonBuilder; import com.google.gson.JsonArray; import com.google.gson.JsonElement; import com.google.gson.JsonObject; import com.google.gson.JsonParser; public class GsonProcessing { public static void main(String[] args) { String jsonStr = "[{\"id\": \"0028167072_CO_FIX_INTTV_1008_P3909_IDX0\",\"status\": \"Active\",\"startDate\": \"2023-02-12T22:00:00Z\",\"place\": [{\"id\": \"8\",\"apartment\": \"578\",\"role\": \"QA\",\"@referredType\": \"street\"}],\"ProductCharacteristic\": [{\"id\": \"CH_100473\",\"valueId\": \"CH12_1000374_VALUE04141\",\"value\": \"LTS\",\"name\": \"Computer\"}]}]"; JsonElement rootElement = JsonParser.parseString(jsonStr); Gson gson = new GsonBuilder().setPrettyPrinting().create(); if (rootElement.isJsonArray()) { JsonArray rootArray = rootElement.getAsJsonArray(); for (JsonElement itemElement : rootArray) { if (itemElement.isJsonObject()) { JsonObject itemObj = itemElement.getAsJsonObject(); JsonElement characteristicElement = itemObj.get("ProductCharacteristic"); if (characteristicElement != null && characteristicElement.isJsonArray()) { JsonArray characteristicArray = characteristicElement.getAsJsonArray(); for (JsonElement charItemElement : characteristicArray) { if (charItemElement.isJsonObject()) { JsonObject charItemObj = charItemElement.getAsJsonObject(); charItemObj.remove("name"); } } } } } } // 输出处理后的JSON String processedJson = gson.toJson(rootElement); System.out.println(processedJson); } }
内容的提问来源于stack exchange,提问作者Catea
相关产品推荐
相关产品推荐

