SyntaxError: JSON Ошибка анализа: Неожиданный идентификатор "объект" (анонимная функция)

Я не понимаю, что пошло не так при анализе файла:

{ "t": -9.30, "p": 728.11, "h": 87.10 }

Код javascript:

<script type="text/javascript">
function check() {
    $.get("http://....file.json", function(response, status, xhr) {
        if (status == "success") {
            var json = JSON.parse(response);
            $("#temp").html(json.t + "&deg;");
            $("#pressure").html(json.p + " mm hg");
        }
        if (status == "error") {
            $("#temp").html("error");
        }
    });
}

Я получаю сообщение об ошибке:

SyntaxError: JSON Parse error: Unexpected identifier "object"

Ответ 1

Скорее всего, ваш response уже является объектом JavaScript, и его не нужно анализировать.

Удалите строку var json = JSON.parse(response);, и ваш код должен работать.

Ответ 2

В соответствии с документами jQuery на $.ajax (это то, что $.get использует внутренне):

dataType:... Если ни один не указан, jQuery попытается вывести его на основе типа ответа MIME (тип XML MIME даст XML, в 1.4 JSON будет получить объект JavaScript...)

Таким образом, ваш ответ скорее всего является объектом. Когда вы делаете JSON.parse(response), вы действительно делаете

JSON.parse("[object Object]")

потому что JSON.parse принуждает свой аргумент к строке, а простые объекты по умолчанию строятся на [object Object]. Начальный [ приводит JSON.parse к ожиданию массива, но затем зажимает токен object, который не соответствует грамматике JSON.

Удалите строку JSON.parse, потому что response уже разбирается в объекте с помощью jQuery.