JSON Python для JavaScript - PullRequest
       7

JSON Python для JavaScript

1 голос
/ 29 января 2010

Я хочу перенести некоторые данные из python в javascript . Я использую Django на стороне Python и JQuery на стороне Javascript.

Объект, который я сериализую на стороне Python, является словарем.

Помимо простых объектов, таких как списки и переменные, этот словарь содержит экземпляры SomeClass. Для сериализации этих экземпляров я расширил simplejson.JSONEncode следующим образом:

class HandleSomeClass(simplejson.JSONEncoder):
    """ simplejson.JSONEncoder extension: handle SomeClass """
    def default(self, obj):
        if isinstance(obj, SomeClass):
            readyToSerialize = do_something(obj)
            readyToSerialize.magicParameter = 'SomeClass'
            return readyToSerialize
        return simplejson.JSONEncoder.default(self, obj)

Таким образом, экземпляры SomeClass появляются в JSON как словари, имеющие magicParameter == 'SomeClass' Эти экземпляры могут быть вложены с разной глубиной.

Теперь я хотел бы воссоздать эти экземпляры на стороне javascript.

Мне бы хотелось иметь JSON-декодер, который преобразует все словари с magicParameter == 'SomeClass' в пользовательские объекты javascript с использованием простой фабрики объектов:

SomeClass = function( rawSomeClass ) {

    jQuery.extend( this, rawSomeClass ) // jQuery extend merges the newly-created object and the rawSomeClass object

}

и затем я мог бы добавить такие методы, чтобы воссоздать исходные объекты:

SomeClass.prototype.get = function( arguments ) {
    // function body

}

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

1 Ответ

0 голосов
/ 29 января 2010
  1. Оценка строки JSON в объекте
  2. Выполнение через значения объекта и определение значений с помощью magicParameter = 'SomeClass'
  3. Выполнение этих значений через преобразователь
  4. Назначить результат обратно туда, где изначально было значение в объекте результата
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...