Как пропустить кодировку по умолчанию, выполняемую рендерингом web.py, или как лучше всего декодировать ее как переменную JSON? - PullRequest
0 голосов
/ 06 февраля 2012

У меня есть словарь Python, передаваемый в JavaScript в рамках web.py. Двойные кавычки в dict заменяются специальными символами, и я не могу вернуться к исходному формату. Есть ли способ избежать кодирования ИЛИ каков идеальный способ его декодирования? Я попробовал JSON.dumps на диктовку, но это опять-таки делает другую кодировку, и я не смог декодировать его с помощью JSON.parse или eval.

Тот же формат словаря, объявленный как inline, javascript прекрасно работает как переменная JSON.

Я новичок в JSON и javascript и предпочитаю не писать новую собственную функцию декодирования.

Моя переменная dict:

{'slca': [{'hssInit': 14}, {'hssFail': 2}], 'slcb': [{'hssInit': 15}, {'hssFail': 3}], 'phx': [{'hssInit': 12}, {'hssFail': 1}]}

Кодированная переменная:

 var myData = "{'slca': [{'hssInit': 14}, {'hssFail': 2}], 'slcb': [{'hssInit': 15}, {'hssFail': 3}], 'phx': [{'hssInit': 12}, {'hssFail': 1}]}";

Упс - специальные символы автоматически преобразуются в строку, когда я вставляю их сюда. Похоже, мне не хватает чего-то очень простого. Но JavaScript выдает синтаксическую ошибку для меня: - (

1 Ответ

0 голосов
/ 14 декабря 2012

Мне действительно нужно увидеть код, чтобы узнать, как web.py возвращает ваш словарь, однако проблема, скорее всего, в том, что ваш словарь возвращается в виде строки. Вот почему вы получаете код символа ' (апостроф, а не двойные кавычки). Таким образом, вы на самом деле не получаете JSON, вы получаете str (yourdict). Это близко, но не правильно.

Если ваш код выглядит примерно так:

def GET(self):
    return {'prop1': 'val', 'prop2': 4}

Попробуйте использовать модуль json для перевода вашего словаря

import json

# ...

def GET(self):
    data = {'prop1': 'val', 'prop2': 4}
    return json.dumps(data)
...