Сериализация и десериализация объекта с помощью JSON - PullRequest
3 голосов
/ 02 августа 2011

Есть ли способ или библиотека, созданная для десериализации строки JSON в типизированный объект в ActionScript и Python?

Например,

class Person
{

    String name;

    int age;

}

Person person = new Person("John", "22");

String jsonString = JSON.Serialize(person);

Person person2 = (Person) JSON.Deserialize(jsonString);

Итак, последнее утверждение в основном приводитобъект, который мы получаем после десериализации jsonString в объект Person.

Ответы [ 4 ]

3 голосов
/ 02 августа 2011

Я могу говорить только за Python. Существует встроенная библиотека для доступа к JSON, ее можно посмотреть в документации здесь .

К сожалению, из коробки вы не можете сериализовать / десериализовать объекты, просто dict s, list s и просто печатать. Вы должны написать конкретные кодировщики объектов для этого. Это в значительной степени отражено в документации.

2 голосов
/ 14 мая 2012

Пожалуйста, попробуйте с этим:

import json

class Serializer:

    @staticmethod
    def encode_obj(obj):
        if type(obj).__name__ =='instance':
            return obj.__dict__ 
    @staticmethod
    def serialize(obj):
        return json.dumps(obj, default=Serializer.encode_obj)

class TestClass:

    def __init__(self):
        self.a = 1

t = TestClass()   
json_str = Serializer.serialize(t)
2 голосов
/ 02 августа 2011

Для AS3 вы можете использовать as3corelib от Mike Chambers.

https://github.com/mikechambers/as3corelib/tree/master/src/com/adobe/serialization/json

Редактировать : После некоторого поиска в Google я снова оказался на SO в этом вопросе: Типизированный кодер и декодер JSON AS3? Кажется, что есть библиотека для выполнения типизированной десериализации, но она не полностью устойчива и дает сбой в некоторых типах данных.Если вы считаете, что можете справиться с ограничениями, то это может быть лучшим вариантом, кроме написания собственного синтаксического анализатора или перехода к чему-то тяжелому, например BlazeDS.

http://code.google.com/p/ason/

0 голосов
/ 03 августа 2011

Краткий ответ: нет, нет. JSON не включает типизированные объекты, за исключением нескольких, таких как массивы. As3Corelib распознает их. Но, как вы упомянули, вы получите объект с парами имя-значение. Поскольку JSON не содержит ваших пользовательских классов ActionScript, не существует автоматического способа преобразования объекта JSON в типизированный объект ActionScript.

as3corelib - отличная утилита для JSON во флэш-памяти. Однако последняя сборка флеш-плеера (версия 10.3) включает JSON как собственный тип данных.

Но не очень сложно создать класс с конструктором, который принимает объект JSON в качестве аргумента, и вы можете разобрать его в переменные класса. Я должен делать это все время при работе с Facebook Graph API.

...