у меня есть большой JSON-файл, содержащий более 100 000 строк (каждая строка содержит данные json), например:
{"id": "000001", "Description" : "Description 0001", "state" : "development", "data" : { "ad1" : "Some data" , "ad2" : "Some data" }}
{"id": "000002", "Description" : "Description 0002", "state" : "development", "data" : { "ad1" : "Some data" , "ad2" : "Some data" }}
{"id": "000003", "Description" : "Description 0003", "state" : "approved", "data" : { "ad1" : "Some data" , "ad2" : "Some data" }}
{"id": "000004", "Description" : "Description 0004", "state" : "checking", "data" : { "ad1" : "Some data" , "ad2" : "Some data" }}
...
{"id": "00000n", "Description" : "Description 000n", "state" : "development", "data" : { "ad1" : "Some data" , "ad2" : "Some data" }}
На первом шаге я хочу декодировать только основные атрибуты, такие как 'id', 'Description' и'state' и пропустить 'data', если это возможно, потому что 'data' - очень большой объект, и для его декодирования требуется больше времени.Без «данных» скрипт работает примерно в 25 раз быстрее:
import simplejson as json
with open('data.jsonl') as f:
for line in f:
item = json.loads(line)
Я перепробовал много библиотек json и не получил нужную производительность.
Можно ли написать собственный декодер, чтобы пропустить некоторыеключи, прежде чем они обрабатываются?
Обновление 1
Я провел несколько тестов с регулярным выражением, чтобы вырезать некоторые данные перед обработкой (как предлагается в комментариях), но обработка увеличивается в 3 раза при декодированиивсе данные.Таким образом, Regex не способ сделать это ....