JavaScript - Помещение недопустимого объекта в объект json - PullRequest
1 голос
/ 18 июня 2020

В настоящее время я выполняю вызов ajax для возврата данных из API. Возвращаемое значение - это объект массива. Этот формат является недопустимым объектом, поэтому у меня возникают проблемы с доступом к данным, которые мне возвращают.

Как я могу преобразовать этот объект в действительный объект json, чтобы я мог получить доступ к возвращаемым данным?

Вот пример возвращаемых данных:

data = { ["<p>Retail Websites has a profit value of $243,291. In the year 2020 we have seen a growth rate of about 2.3% </p>" ] }

Я пробовал использовать dataType: json в моем вызове ajax, но результат остался прежним.

Вот мой вызов ajax с использованием «dataType: json»:

$.ajax({
    type: "POST",
    url: dataUrl,
    data: {
        "retailId": retailId, 
    },
    dataType: "json",
    async: true,
    error: function () {
        console.log("error")
    }
}).done(function (data) {
    console.log("retail data", data)
}) 

Я не могу получить доступ к данным в этом объекте. Я ожидаю, что у меня будет доступ к данным, например к объекту json, например: data[0]. Я застрял в том, как выполнить sh это.

1 Ответ

1 голос
/ 18 июня 2020

Если ваши данные , установите как:

var data = { ["<p>Retail Websites has a profit value of $243,291. In the year 2020 we have seen a growth rate of about 2.3% </p>" ] }

Тогда проблема в фигурных скобках без ключа. Когда вы их удалите, массив правильный. data[0] соответствует ожидаемой строке.

Если результатом вашего вызова API является весь data = {...}, и вы знаете, что это так, то вы можете захватить строку, удалить символы в начало и конец, которые не принадлежат (все, что находится за пределами квадратных скобок), и используйте JSON.parse для получения ваших данных JSON. Есть несколько способов убрать персонажей. Если текст всегда так, вы можете использовать подстроки или, если вам нужно быть более гибким, вы можете использовать регулярные выражения.

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