Все зависит от контекста задачи.Как я сказал в комментарии, вы можете использовать SAX-парсер вместо DOM.Это помешает вам построить огромную модель в памяти.Синтаксические анализаторы SAX работают с механизмами, управляемыми событиями (обратными вызовами).
Другой вариант, если ваша структура JSON проста, как показано, и ее изменение не ожидается, вы можете использовать просто регулярные выражения.В следующем примере показана идея, но будьте осторожны, предполагается, что ваши значения всегда имеют форму [\w\d\s]*
и не содержат кавычек и запятых.
import re
rx = r'\s*\"(\w\d+)\"\s*:\s*"([\w\d\s]*)"\s*'
with open('in.json') as inp:
src_text = inp.read().strip(' \t\r\n{}')
output = []
for pair in src_text.split(','):
m = re.match(rx, pair)
key = m.group(1)
val = m.group(2)
output.append('"{}": "{}"'.format(key, 'value C' if key == 'key1' else val))
with open('out.json', 'w') as outp:
outp.write('{' + ', '.join(output) + '}')