Я использую следующий код для анализа многострочных объектов JSON, разделенных запятой, из веб-строки, хранящейся в файле .json:
import json
def stream_read_json(fn):
start_pos = 0
with open(fn, 'r', encoding='utf-8') as f:
while True:
try:
obj = json.load(f)
yield obj
return
except json.JSONDecodeError as e:
f.seek(start_pos)
json_str = f.read(e.pos)
obj = json.loads(json_str, encoding = 'utf-8')
start_pos += e.pos
yield obj
Первый объект анализируется правильно; следующие - нет.
При тестировании случайных значений f.seek(start_pos) я вижу несоответствие индексу, найденному с помощью, кроме json.JSONDecodeError as e:. Почему этот индекс отличается от количества символов, отображаемых при выборе в IDE текста до символа, на котором заканчивается объект JSON в файле?
Как я могу гарантировать, что объекты будут правильно ли анализироваться?
Я пытался получить f.seek(start_pos) для второго объекта JSON в командной строке отладки, но он сильно отличается от e.pos выдается из-за ошибки.
Пример JSON находится здесь:
{
"user": {
"id": 1,
"profile": {
"name": "Alice",
"age": 30
}
},
"product": {
"sku": "A1234",
"details": {
"name": "Laptop",
"price": 999.99
}
}
},
{
"user": {
"id": 2,
"profile": {
"name": "Bob",
"age": 22
}
},
"product": {
"sku": "A123w",
"details": {
"name": "Laptop",
"price": 9.99
}
}
}
Подробнее здесь: https://stackoverflow.com/questions/787 ... -in-a-file
Несогласованность индексов символов при попытке проанализировать несколько JSON в файле. ⇐ Python
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение
-
-
Ошибка Java при попытке проанализировать объект json с пробелом с помощью gson
Anonymous » » в форуме JAVA - 0 Ответы
- 29 Просмотры
-
Последнее сообщение Anonymous
-