Java: Как добавить объект JSON в массив JSON, только если один из элементов еще не существует - PullRequest
0 голосов
/ 26 ноября 2018

Скажем, у меня есть массив JSON (внутри объекта JSON) объектов JSON.

{
  data:
    [
      {id:45, building:1, lane: 6},
      {id:58, building:1, lane: 9},
      {id:46, building:2, lane: 4},
      {id:51, building:2, lane: 9},
      {id:40, building:3, lane: 2},
      {id:39, building:4, lane: 3}
  ]
}

Я хочу циклически перемещаться по массиву и добавлять каждый объект JSON в новый массив JSON, но ТОЛЬКО еслиодно из значений определенного ключа (building) еще не добавлено в новый массив JSON.

Например, если я перебираю массив JSON и получаю значение id:45, я хочудобавить этот объект в мой новый массив JSON, но только если еще нет объекта с парой ключ-значение building:1.Поскольку это будет первый объект, он будет добавлен в новый массив.

Скажем, второй объект, над которым я перебирал, был id:58.Поскольку в моем новом массиве JSON уже есть объект с building:1, я бы не хотел добавлять этот объект в мой новый массив.

Как бы я поступил так?

1 Ответ

0 голосов
/ 26 ноября 2018

Я сам не проверял, но это должно работать.

    JSONArray arr = //your data object
    JSONArray newArr = new JSONArray();
    arr.stream().forEach(el -> {
        Integer val = (Integer) ((JSONObject) el).get("building");
        if (((List<Integer>) newArr.parallelStream().map(obj -> (Integer) ((JSONObject) obj).get("building"))
                .filter(obj -> obj == val).collect(Collectors.toList())).isEmpty()) {
            newArr.add(el);
        }
    });
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...