2013-12-13 3 views
0

У меня есть массив sku = ["MAPNQ20673"]. Преобразуя это в json, используя sku.to_json, я получаю "[\"MAPNQ20673\"]". Это недопустимый json. Мне нужно передать этот массив в скрипт python.Недействительный json в RoR

system "python2 /home/nish/stuff/repos/Untitled/voylla_staging_changes/app/models/ReviseItem.py #{sku.to_json} #{qtys.to_json}" 

Затем я использую json.loads(sys.argv[1]) для декодирования. Но так как JSON недействителен, я получаю следующее сообщение об ошибке при декодировании JSON в питона сценария:

raise ValueError("No JSON object could be decoded") 
ValueError: No JSON object could be decoded 

Как я могу преобразовать массив действительный JSON?

EDIT: Он отлично работает для меня, когда я вызываю скрипт python из автономной программы ruby. Но когда я RTY сделать то же самое с контроллером приложения RoR, он не

+0

Как вы превращающего его JSon? где ваш фактический код? – yuvi

+0

@yuvi: sku.to_json – nish

+0

Вероятно, вы должны немного прочитать о python и json объектах. Этот код не имеет смысла (или, альтернативно, взгляните на ответ Джеймса Миллса о том, как это сделать) – yuvi

ответ

1

Это работает втирают для меня с Python 2.7:

>>> from json import dumps, loads 
>>> sku = ["MAPNQ20673"] 
>>> s = dumps(sku) 
>>> x = loads(s) 
>>> x == sku 
True 
>>> x 
[u'MAPNQ20673'] 
+0

Да, это отлично работает для меня, когда я вызываю его из отдельной рубиновой программы. Но когда я делаю то же самое из приложения RoR, я получаю недопустимый json. – nish

+0

Затем я предлагаю вам узнать, где происходит кодирование/декодирование. Вы переходите от Python <-> Ruby on Rails? –

Смежные вопросы