Единственный надежный способ узнать, является ли это json или нет, это проверить содержимое.Смысл запустить его через JSON.parse()
.Если он выбрасывает исключение, это не json (или искаженный json).
try {
JSON.parse(fileContents);
} catch(e){
console.log("Not a json file or file containing malformed json");
}
Типы пантомимы не хранятся в файлах как часть данных.Обычно это определяется расширением, магическим числом (двоичный заголовок) и т. Д. И в зависимости от реализации браузер, скорее всего, просто собирается взглянуть на расширение и использовать некоторую таблицу поиска.Казалось бы, в используемом вами браузере не было одного набора для .json
файла
Например, при загрузке файла .json
в приведенной ниже демонстрации в Chrome будет отображаться application/json
.Если изменить его на .txt
, он будет выглядеть как text/plain
.Изменение его на какое-то другое расширение изменит его снова.
document.querySelector('input').addEventListener('change',function (){
document.body.insertAdjacentHTML('beforeend',this.files[0].type+"<br>");
});
<input type="file" /><br>