2016-09-30 2 views
3

Я разбор JSon файлов (размер варьируется от несколько килобайта до несколько Гбайта), которые построены как массив объектов, например:Java: лучший способ сравнить все ключи внутри массива объектов json?

{ 
    "records": [ 
    { 
     "col1": "someValue", 
     "col2": "someValue", 
     "col3": "someValue", 
    }, 
    { 
     "col1": "someValue", 
     "col2": "someValue", 
     "col3": "someValue", 
    }, 
    { 
     "col1": "someValue", 
     "col2": "someValue", 
     "col3": "someValue", 
    } 
    ] 
} 

Запись представляет собой отдельные строки данных из таблицы и файла всегда содержит данные только для одной таблицы.

Я могу извлечь метаданные таблицы и проанализировать ее без каких-либо проблем. Для этого я использую JSON.simple library.

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

Есть ли какое-нибудь приятное решение, которое может быстро сравнить все ключи от всех объектов json в массиве json?

+0

Вы знаете нужные имена столбцов заранее? – Quant

+0

Нет, я не знаю названия столбцов. – m4r74

ответ

1

Вы не можете не смотреть на каждую клавишу (количество n) каждой строки (количества m) ваших данных, поэтому сложность не может быть ниже O(n * m), так или иначе.

+0

Да, конечно, мне нужно посмотреть каждый ключ в каждом объекте, но какой будет наилучший подход? Я надеялся, что в одной из json-библиотек будет метод, позволяющий проверять ключи ..? – m4r74

+0

или, возможно, не проверять, но сравнивать, поскольку для проверки требуется схема. – m4r74