Вы можете использовать функцию javascript eval () , чтобы убедиться, что она действительна.
например
var jsonString = '{ "Id": 1, "Name": "Coke" }';
var json;
try {
json = eval(jsonString);
} catch (exception) {
//It's advisable to always catch an exception since eval() is a javascript executor...
json = null;
}
if (json) {
//this is json
}
В качестве альтернативы вы можете использовать JSON.parse
из json.org :
try {
json = JSON.parse(jsonString);
} catch (exception) {
json = null;
}
if (json) {
//this is json
}
Надеюсь, что это поможет.
ВНИМАНИЕ: eval()
опасно, если кто-то добавляет вредоносный JS-код, поскольку он выполнит его. Убедитесь, что строка JSON заслуживает доверия , т. Е. Вы получили ее из надежного источника.
Изменить Для моего 1-го решения рекомендуется сделать это.
try {
json = eval("{" + jsonString + "}");
} catch (exception) {
//It's advisable to always catch an exception since eval() is a javascript executor...
json = null;
}
В гарантировать json-ness. Если jsonString
не является чистым JSON, eval выдаст исключение.
Есть пара разных способов установить Python, как говорит обновление OP, и они размещают файлы в разных местах. Например, macports
помещает вещи в /opt/local/
, а homebrew
помещает вещи в /usr/local/
. Кроме того, Mac OS X предлагает несколько версий python с собой. Таким образом, если вы устанавливаете python много раз разными способами, вы получите много версий python, независимо существующих в вашей системе.
Я точно не знаю , Я думаю, проблема в том, что если у вас много версий python, то какой из них использовать и где найти пакеты будет определяться порядком пути в вашей системе PATH
и PYTHONPATH
соответственно. Таким образом, вы можете потерять контроль над установкой модулей python. Учтите, что если вы запустите sudo python setup.py install
для установки модуля (он найдет python у root PATH
), а затем попробуйте import
модуль python -c "import it"
(на этот раз он найдет python вашим PATH
), возможно что-то пойдет не так. Это моя догадка, я не подтвердил это. Но в моем собственном случае что-то пошло не так.
Я думаю, что принцип заключается в том, чтобы знать о том, что разные способы и инструменты устанавливают вещи независимо друг от друга местоположения, поэтому используйте их осторожно.
virtualenv
) PATH
и подумать, правильно ли это. Поскольку он уже запутывался и, казалось, очень трудно вылечить, поэтому, наконец, я решил этот вопрос с полной переустановкой ОС и начал следить за DOs-DONT выше. Для установки научной среды с помощью python (numpy / scipy / matplotlib, который показал проблемы, чтобы заставить меня задать этот вопрос), я нашел этот учебник был чрезвычайно полезен. Итак, проблема решена окончательно.
Чтобы установить дистрибутивы python в определенную папку, вы можете использовать схему --prefix
во время установки python. Используя префикс , вы можете, например, установить Python 2.7 в папку /opt/py27
. Теперь, чтобы использовать новый установленный дистрибутив Python, вы должны: очистить PATH и LD_LIBRARY_PATH:
Вот и все.
(Если вам нужны несколько сред Python, установленных одновременно, я бы предложил посмотреть на virtualenv )
import nest
, и я считаю, что это вызвано множественными копиями библиотек. Как я могу полностью удалить все библиотеки (а также easy_install и т. Д.) И переустановить?
– Skyler
2 January 2013 в 11:14
/opt/py27
, как вы упомянули? Мне кажется, что путаница происходит главным образом потому, что каждая версия / флейта Python хочет установить свои собственные бинарные файлы i> (python
, pip
, easy_install
) с одинаковыми именами и в в том же месте, что и другие версии / ароматы.
– jez
17 December 2015 в 19:49
Вот еще одно отличное решение для управления различными версиями python:
https://github.com/pyenv/pyenv
(я уже предоставил ответьте здесь, но решили опубликовать это как дополнительный или альтернативный ответ)