Что такое прокси, чтобы эффективно оценить, содержит ли файл JSON? - PullRequest
0 голосов
/ 10 января 2020

Не уверен, что это тот тип вопросов, который позволяет SO, но лучше извините, чем безопасный:

У меня есть скрипт, который должен проверить, является ли файл JSON, и заменить его на JSON версия, если это не так. Сценарий должен быть быстрым. Если I go с решением о грубой силе:

try:
    json.loads(file)
except ValueError:
    replace(file)

... это на порядок медленнее. Теперь в моей конкретной ситуации c можно получить ложные срабатывания, поэтому я решил go с несовершенным решением ради скорости. Например:

if file.firstletter in ["{", "["]:
    replace(file)

(кстати, это псевдокод. Мой вопрос - agnosti языка c)

Это будет работать в большинстве случаев, так как большинство файлов не JSON как правило, начинаются без скобок.

Другой пример, который я могу вспомнить, - заканчивается ли файл скобками.

Каковы другие способы эффективной оценки того, содержит ли файл JSON?

1 Ответ

0 голосов
/ 10 января 2020

Вы можете посмотреть на расширение файла (например, *.json).

Кроме проверки начальных / конечных символов ({, [) - хорошая эвристика c для быстрого исключить не JSON файлы. Но это может привести к ложным срабатываниям, поэтому в качестве второго шага вы все равно должны попробовать разобрать файл как JSON, чтобы действительно узнать, является ли он JSON.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...