Я использую flask, и мой бэкэнд возвращает AJAX ответ в виде списка python, а затем JavaScript понимает его как строку, но это проблема, потому что мне нужно перебирать этот список.
Все, что я мог найти в Интернете, это как проверить тип переменной, но не смог найти никакого метода (который в python довольно прост), чтобы изменить его.
Попробуйте JSON.parse
. — person David Spira schedule 29.08.2019
Array.isArray() для проверки ключевого слова array..typeof, чтобы узнать тип переменной — person David Spira schedule 29.08.2019
Но переменная представляет собой строку @ShivendraGupta, поэтому Array.isArray
и typeof
возвращают false
и "string"
соответственно. — person David Spira schedule 29.08.2019
В большинстве случаев HTTP-ответ приходит в виде строки. Таким образом, вы можете сделать две вещи. Во-первых, вы должны проверить, являются ли данные строковым типом? если это так, преобразуйте их в объект. typeof response === 'string'
затем JSON.parse( response )
— person David Spira schedule 29.08.2019
Возможный дубликат разобрать строку JSON в массив — person David Spira schedule 29.08.2019
@JackBashford, я не понимаю. должен ли маршрут фляги иметь строку: return JSON.parse(name_of_the_list)? в настоящее время он возвращает name_of_the_list — person David Spira schedule 29.08.2019
Эта ссылка поможет вам. Array.isArray() w3schools.com/jsref/tryit.asp?filename=tryjsref_isarray — person David Spira schedule 29.08.2019
Возможный дубликат передачи списка python в javascript — person David Spira schedule 29.08.2019
Можете ли вы опубликовать образец строки, которую вы получаете? — person David Spira schedule 30.08.2019
Метод
Array.isArray()
определяет, является ли переданное значение массивом или нет.и если это массив, он вернет
Перейдите по этой ссылке, чтобы узнать больше о Array.isArray
Это не тот вопрос, который задают; OP знает, что JavaScript работает со строкой, но он/она хочет заставить свой JavaScript понять, что это действительно массив. — person David Spira; 30.08.2019
Если ваш ответ представляет собой строку, вы можете использовать
JSON.parse
, чтобы превратить ее в объект/массив JS.Если вы используете AJAX с jQuery, вы также можете использовать
dataType
:Но если вы пишете свой собственный API, я предлагаю вам добавить правильный заголовок, чтобы сообщить браузеру, что это формат JSON, а не строка.
Для фляги вы можете использовать
jsonify
(ссылка):я пробую первый вариант, который вы представили, и я получаю сообщение об ошибке консоли: Uncaught SyntaxError: неожиданный токен u в JSON в позиции 2 — person David Spira; 29.08.2019
Возможно, ваша строка не является допустимым JSON. Вы можете проверить свою строку здесь. — person David Spira; 29.08.2019
моя строка на самом деле является списком Python [[a,b,c],[d,e,f],…] — person David Spira; 29.08.2019
Если это не JSON, JS не сможет прочитать эту строку (если вы не напишете для этого синтаксический анализатор). Убедитесь, что ваш API может отвечать на действительный JSON. — person David Spira; 29.08.2019