gpt4 book ai didi

java - 从 JSONObjects 的 JSONArray 中删除除一个元素之外的所有元素

转载 作者:行者123 更新时间:2023-12-02 12:00:31 26 4
gpt4 key购买 nike

我有一个像这样的 JSONArray (org.json):

[
{ "a": "a" },
{ "b": "a" },
{ "c": "a" },
{ "d": "a" },
{ "e": "a" },
{ "f": "a" },
{ "g": "a" }
]

我想删除所有具有 key aJSONObject。除了我天真的方法之外,还有更好的方法吗?

Iterator objects = jsonArray.iterator();
while (objects.hasNext()) {
Object o = objects.next();
if (o instanceof JSONObject && !((JSONObject) o).has("a")) {
objects.remove();
}
}

预期输出:

[{"a": "a"}]

最佳答案

如果您正在寻求函数式风格的解决方案,您可以将 Iterator 包装到 Stream 中,然后执行您想要的任何操作。

功能解决方案之一:

JSONArray newJsonArray =
StreamSupport.stream(jsonArray.spliterator(), false)
.filter(JSONObject.class::isInstance)
.map(JSONObject.class::cast)
.filter(j -> j.has("a"))
.collect(collectingAndThen(toList(), JSONArray::new));

注意:上面的解决方案不会修改原始的JSONArray。遵循函数式编程的原则,人们应该更喜欢收集到一个新对象中,而不是修改现有对象。

关于java - 从 JSONObjects 的 JSONArray 中删除除一个元素之外的所有元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61037130/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com