Оптимизированный подход для параллельного анализа объекта JSON и формирования агрегированного json - PullRequest
0 голосов
/ 25 октября 2019

Как часть эффективной реализации разбора нескольких JSON и агрегирования результирующего JSON как окончательного.

Предположим, что:

Json1 : 

[
{
  "id":"abc",
  "name" : "json"
},
... having 10k json objects
]

Json2: 

[
{
  "id":"abc",
  "language" : "java"
},
... having 10k json objects
]

Json3: 

[
{
  "id":"abc",
  "subject" : "solving"
},
... having 10k json objects
]

из 3 jsons, требования 1. Оптимизированы способы поиска атрибута "id" в 3 jsons и, если сопоставить эти объекты json с окончательнымJSON объект.

Подход придерживался

Я пытался следующим образом

Iterate over the first JSON array object and find the one attribute "id" and iterate over remaining JSON's and look the matching "id" and corresponding JSON object merging and forming final objects 
In this process, 
Taking O(n^3) time for search the find the matching records 
more ever n > 10k in my case  


Какой будет наилучший подход для продолжения

1 Ответ

0 голосов
/ 02 ноября 2019

Предполагая, что вы уже знаете все возможные поля JSON, а id - уникальный атрибут, создайте объект java, отражающий все поля.

class MyObject{
    String id;
    String name; 
    String language;
    String subject;
}

Затем создайте список пары ключ-значение сid в качестве ключа. И всякий раз, когда вы найдете id, если он присутствует в списке пары ключ-значение, измените соответствующий объект. В противном случае создайте новый объект и добавьте его в качестве новой пары ключ-значение в список. При этом вы будете обходить каждый JSON только один раз, но это может занять много вспомогательного пространства.

...