Форум Flasher.ru
Ближайшие курсы в Школе RealTime
Список интенсивных курсов: [см.]  
  
Специальные предложения: [см.]  
  
 
Блоги Правила Справка Пользователи Календарь Сообщения за день
 

Вернуться   Форум Flasher.ru > Flash > ActionScript 3.0

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 22.02.2012, 16:14
Stitch512 вне форума Посмотреть профиль Отправить личное сообщение для Stitch512 Найти все сообщения от Stitch512
  № 1  
Ответить с цитированием
Stitch512

Регистрация: Nov 2010
Сообщений: 150
По умолчанию Сериализация в JSON

Подскажите, если кто знает, сериализаторы произвольных объектов (классов) в JSON. Разумеется с использованием метаданных. Т.е. в классе метатегами отмечаем поля для сериализации, их тип и т.д., и соответсвенно на выходе имеем JSON. И желательно с возможностью подмены классов. Т.е. к примеру два класса с общим интерфейсом, сохраняем первый класс а при загрузке указываем чтобы создавался экземпляр второго.

Старый 22.02.2012, 16:20
kackbip вне форума Посмотреть профиль Отправить личное сообщение для kackbip Найти все сообщения от kackbip
  № 2  
Ответить с цитированием
kackbip
 
Аватар для kackbip

Регистрация: Sep 2007
Адрес: Tomsk
Сообщений: 943
Отправить сообщение для kackbip с помощью ICQ Отправить сообщение для kackbip с помощью Skype™
В as3 можно использовать подобного рода метаданные? Что-то не слышал раньше.

Старый 22.02.2012, 16:26
Inet_PC вне форума Посмотреть профиль Отправить личное сообщение для Inet_PC Посетить домашнюю страницу Inet_PC Найти все сообщения от Inet_PC
  № 3  
Ответить с цитированием
Inet_PC
 
Аватар для Inet_PC

Регистрация: Feb 2009
Адрес: Гы...поди, найди!
Сообщений: 853
Записей в блоге: 1
Придется рядом с каждым полем к. нужно сериализовать метатег, уколебешься.
Цитата:
В as3 можно использовать подобного рода метаданные? Что-то не слышал раньше.
keep-as3-metadata и describytype/
__________________
http://www.chessmax.ru

Старый 22.02.2012, 16:29
Stitch512 вне форума Посмотреть профиль Отправить личное сообщение для Stitch512 Найти все сообщения от Stitch512
  № 4  
Ответить с цитированием
Stitch512

Регистрация: Nov 2010
Сообщений: 150
Код AS3:
Придется рядом с каждым полем к. нужно сериализовать метатег, уколебешься.
Ну не обязательно, можно как с тегом [Bind] поступить. Если он указан у класса то сериализуются все поля, иначе только отмеченные. Та и в любом случае, если не сериализация метатегами то вручную поля записывать, менее универсально а объем кода такой же.

Старый 22.02.2012, 16:31
dimarik вне форума Посмотреть профиль Отправить личное сообщение для dimarik Найти все сообщения от dimarik
  № 5  
Ответить с цитированием
dimarik
.
 
Аватар для dimarik

модератор форума
Регистрация: Sep 2003
Адрес: Москва
Сообщений: 4,630
Записей в блоге: 20
А шо, JSON поддерживает строгую типизацию?
__________________
Воспитан в TimeZero. Работаю в Mail.ru.

Старый 22.02.2012, 16:31
Genzo вне форума Посмотреть профиль Отправить личное сообщение для Genzo Посетить домашнюю страницу Genzo Найти все сообщения от Genzo
  № 6  
Ответить с цитированием
Genzo
 
Аватар для Genzo

блогер
Регистрация: Feb 2010
Адрес: MSK
Сообщений: 859
Записей в блоге: 3
Отправить сообщение для Genzo с помощью ICQ Отправить сообщение для Genzo с помощью Skype™
Цитата:
Т.е. в классе метатегами отмечаем поля для сериализации, их тип и т.д., и соответсвенно на выходе имеем JSON.
Можно попробовать через Object.setPropertyIsEnumerable, и у всех интерфейс типа
Код AS3:
interface IJSONSerializable {
serialize():String
unserialize(value:String):void
}
Но на сколько я помню, есть нативная поддержка всего этого начиная с 11 флеша http://help.adobe.com/en_US/FlashPla...pt/3/JSON.html
__________________
Gamedev != Gaming (http://twitter.com/#!/GenzoDev). Don't forget to [+] if it works.

Старый 22.02.2012, 16:35
Stitch512 вне форума Посмотреть профиль Отправить личное сообщение для Stitch512 Найти все сообщения от Stitch512
  № 7  
Ответить с цитированием
Stitch512

Регистрация: Nov 2010
Сообщений: 150
Код AS3:
А шо, JSON поддерживает строгую типизацию?
Нет, для этого нужно будет дополнительно хранить тип объекта, но это уже детали реализации.

Добавлено через 5 минут
Genzo: Немного не то. Мне нужно сохранять объекты произвольного типа и структуры, тип объекта для восстановления соответственно будет тоже сохраняться. Просто хотел вначале узнать, есть ли уже готовые решения, пока не сталкивался.

Старый 22.02.2012, 16:48
dimarik вне форума Посмотреть профиль Отправить личное сообщение для dimarik Найти все сообщения от dimarik
  № 8  
Ответить с цитированием
dimarik
.
 
Аватар для dimarik

модератор форума
Регистрация: Sep 2003
Адрес: Москва
Сообщений: 4,630
Записей в блоге: 20
А зачем тогда JSON? AMF3 из коробки поддерживает типы и ссылки.
__________________
Воспитан в TimeZero. Работаю в Mail.ru.

Старый 22.02.2012, 16:53
Stitch512 вне форума Посмотреть профиль Отправить личное сообщение для Stitch512 Найти все сообщения от Stitch512
  № 9  
Ответить с цитированием
Stitch512

Регистрация: Nov 2010
Сообщений: 150
Сохранять нужно в текстовый файл и не все поля класса а только необходимые.

Старый 22.02.2012, 17:05
dimarik вне форума Посмотреть профиль Отправить личное сообщение для dimarik Найти все сообщения от dimarik
  № 10  
Ответить с цитированием
dimarik
.
 
Аватар для dimarik

модератор форума
Регистрация: Sep 2003
Адрес: Москва
Сообщений: 4,630
Записей в блоге: 20
Я покажусь занудой, но что такое "текстовый" файл? Бессмысленный набор байтов. Пишите в текстовый файл, это не запрещено. Ну а [Transient] поддерживается нативно.

Добавлено через 3 минуты
Код AS3:
registerClassAlias('$', AClass);
const o:AClass = new AClass();
o.publicVarOne = 'publicVarOne';
o.publicVarTwo = 'publicVarTwo';
const ba:ByteArray = new ByteArray();
ba.writeObject(o);
ba.position = 0;
const oo:AClass = ba.readObject() as AClass;
Код AS3:
internal class AClass {
 
	public function AClass() {
		super();
	}
 
	[Transient]
	public var publicVarOne:	String;
	public var publicVarTwo:	String;
 
}
__________________
Воспитан в TimeZero. Работаю в Mail.ru.

Создать новую тему Ответ Часовой пояс GMT +4, время: 08:00.
Быстрый переход
  « Предыдущая тема | Следующая тема »  

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


 


Часовой пояс GMT +4, время: 08:00.


Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.