1 回答
TA贡献1735条经验 获得超5个赞
使用作为 JavaEE(现在的 EE4J)规范一部分的 JSON-P (JSR-374),您可以执行以下操作:
String jsonString = "{\"Products\":[{\"p10\":\"SamsungS5\"},{\"i6\":\"Iphone6\"}]}";
String removeValue = "\"Iphone6\"";
JsonReader jsonReader = Json.createReader(new StringReader(jsonString));
JsonObject jsonObj = jsonReader.readObject();
JsonPatchBuilder builder = Json.createPatchBuilder();
JsonArray jsonArray = jsonObj.getJsonArray("Products"); // [{"p10":"SamsungS5"},{"i6":"Iphone6"}]
for (int i = 0; i < jsonArray.size(); i++) {
JsonObject entry = jsonArray.get(i).asJsonObject();
for (JsonValue value : entry.values()) {
if (value.toString().equals(removeValue)) {
builder.remove("/Products/" + i);
}
}
}
JsonPatch patch = builder.build();
JsonObject newObj = patch.apply(jsonObj);
System.out.println(newObj); // {"Products":[{"p10":"SamsungS5"}]}
“产品”数组包含 JSON 条目(键值对,如 )。然后循环访问每个条目的值(尽管只有一个:)。如果它与要删除的条目匹配,则可以修改修补程序以删除该条目的索引。然后在 JSON 对象上应用修补程序。{"i6":"Iphone6"}"Iphone6"
依赖关系是规范,就像 JavaEE 一样:
<dependency>
<groupId>javax</groupId>
<artifactId>javaee-api</artifactId>
<version>8.0</version>
<scope>provided</scope>
</dependency>
和 JSON-P 的实现,如玻璃鱼:
<dependency>
<groupId>org.glassfish</groupId>
<artifactId>javax.json</artifactId>
<version>1.1.4</version>
</dependency>
添加回答
举报