В настоящее время я кодирую переход от системы, которая использовала созданные вручную файлы JSON, к системе, которая может автоматически генерировать файлы JSON. Старая система работает;новая система работает;мне нужно перенести данные из старой системы в новую.
Файлы JSON используются приложением iOS для обеспечения функциональности и никогда ранее не читались нашим серверным программным обеспечением в Ruby On Rails. ,Чтобы выполнить преобразование между исходной системой и новой системой, я начал работу по синтаксическому анализу существующих файлов JSON.
Проблема заключается в том, что один из моих первых двух файлов примеров имеет запятые в JSON:
{ "sample data": [1, 2, 3,] }
Это, очевидно, прошло хорошо с приложением для iOS, потому что этот файл использовался некоторое время. Теперь мне нужен какой-то способ для анализа данных, представленных в файле на моем сервере Ruby on Rails, который (вполне справедливо) выдает исключение из-за недопустимой запятой в файле JSON.
Я не могу просто JSON.parse код, потому что синтаксический анализатор совершенно справедливо отклоняет его как недействительный JSON. Есть ли какой-то способ его проанализировать - вариант, который я могу передать в JSON.parse, или гем, который что-то добавляет, и т. Д. И т. Д.? Или мне нужно сообщить, что нам придется вручную исправить поврежденные файлы, прежде чем автоматизированный процесс сможет их обработать?
Редактировать:
На основании комментариев и запросовПохоже, что некоторые дополнительные данные требуются. Рассматриваемые файлы JSON хранятся в файлах .zip на S3, которые хранятся в ActiveStorage. Процесс, который я пишу, должен загружать, распаковывать и анализировать zip-файлы, используя файл 'manifest.json' в качестве ключа для преобразования архивного файла в структуру базы данных с несколькими меньшими файлами, хранящимися на S3 вместо одногопочтовый индекс, который содержит все. (Очень) долгосрочная цель состоит в том, чтобы клиенты прекратили скачивать унитарный zip-файл и вместо этого скачивали файлы по отдельности. Первый шаг к этому - разбить zip-файлы на server , что означает, что сервер должен читать zip-файлы. Более подробная выборка данных приведена ниже. (Обратите внимание, что структура содержит несколько проектных решений, о которых я позже пожалел; одна из первоначальных идей состояла в том, чтобы иметь возможность повторно использовать файлы, а не упаковывать несколько копий одного и того же идентичного файла, но YAGNI укусил меня сзади)
Следующее включает комментарии, которые не являются законными в формате JSON:
{
"defined_key": [
{
"name": "Object_with_subkeys",
"key": "filename",
"subkeys": [
{
"id":"1"
},
{
"id":"2"
},
{
"id":"3" // references to identifier on another defined key
}, // Note trailing comma
]
}
],
"another_defined_key":[
{
"identifier": "should have made parent a hash with id as key instead of an array",
"data":"metadata",
"display_name":"Names: Can be very arbitrary",
"user text":"Wait for the right {moment}", // I actually don't expect { or } in the strings, but they're completely legal and may have been used
"thumbnail":"filename-2.png",
"video-1":"filename-3.mov"
}
]
}