我有一个像这样的JsonArray:

"fields" : [
    {
      "name":"First Name",
      "id":1
    },
    {
      "name":"Middle Name",
      "id":2
    },
    {
      "name":"Last Name",
      "id":3
    }
]


我想从JsonArray上删除第二个JsonObject。为此,我编写了以下代码:

JsonArray fieldsObject =jsonObject.getJsonArray("fields");
fieldsObject.remove(fieldsObject.getJsonObject(2));


但是第二行抛出错误:java.lang.UnsupportedOperationException

有什么办法可以从JsonArray中删除JsonObject吗?

最佳答案

您不能从JsonArray中删除​​元素,因为它不支持remove()方法:

private static final class JsonArrayImpl extends AbstractList<JsonValue> implements JsonArray {


remove()方法的实现来自AbstractList

public E remove(int index) {
    throw new UnsupportedOperationException();
}


相反,为什么不创建一个单独的数据结构数组或列表来保存所需的对象呢?

顺便说一句,使用JsonArray的目的是以对象形式加载json数据,这就是为什么它支持读取方法但不支持对加载的数据结构进行修改的原因。

关于java - 从json数组中删除json对象,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/36325499/

10-12 02:44