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

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

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 24.07.2010, 19:13
in4core вне форума Посмотреть профиль Отправить личное сообщение для in4core Найти все сообщения от in4core
  № 1  
Ответить с цитированием
in4core
[+4 06.05.14]
 
Аватар для in4core

Регистрация: Mar 2009
Сообщений: 4,219
Записей в блоге: 14
По умолчанию Подарок лета, JSON for AS2

В контакте как известно, можно получать 2 формата, 1 - XML, 2 - JSON
JSON приходит к нам ввиде объекта ( а точнее строки - похожей на объект) а именно,

{ 'a':'value', 'b':'value2' ......} Так, по скольку флеш работать с такими типами данных ( а точнее приводить типы таких данных) не может самостоятельно. Вот вам, товарищи мой класс. Возможно , уже кто то делал подобное, или даже висит на всеобщем обозрении, но я не видел. Держите и пользуйтесь кому надо. and...sorry for my bad english....


Код:
/*
hit JSON standart 
class can convert such strings {'operator':'value', 'operatorN':'valueN'}
Created by Alexander Sigankov
PLS, TYPE ON FRAME : "com.JSON.HELP();"  then test a movie 'ctrl+enter'**
*/
class com.JSON extends String {

	private static var count:Number = null;
	private static var def_array:Array = [];
	private static var def_2array:Array = [];
	private static var Obj:Object = new Object();

	public static function convert(s:String, method:String):Object {

		/*
		 s - string for convert,
		 m - method, 3 types : 1 - 'object' , 2 - 'array', 3 - '2array'
		 example of JSON input string 'op1':'value1','op2':'value2','op3':'value3','op4':'value4'
		*/

		count = s.length;
		s = s.split("'").join('').split('"').join('').split('{').join('').split('}').join('');

		/* cleared string */

		if (s.indexOf(',') == -1 && s.indexOf(':') != -1) {
			if (method == 'array') {
				return [s.substr(0, s.indexOf(':')), s.substr(s.indexOf(':')+1, s.length)];
			} else if (method == 'object') {
				return Obj[s.substr(0, s.indexOf(':'))]=s.substr(s.indexOf(':')+1, s.length);
			} else if (method == '2array') {
				return [[s.substr(0, s.indexOf(':')), s.substr(s.indexOf(':')+1, s.length)]];
			} else {
				trace('no method detected, please use a HELP function for true condition');
				return;
			}
		} else {
			if (s.indexOf(',') == -1 && s.indexOf(':') == -1) {
				trace('scholota detected');
				return 'error 300. string not coverted : '+s;
			}
		}
		/* retrive methods :
		array
		2array
		object
		*/
		switch (method) {
			case 'array' :
				for (var i = 0; i<count; i++) {
					def_array.push(s.substr(0, s.indexOf(':')));
					def_array.push(s.substr(s.indexOf(':')+1, s.indexOf(',')-s.indexOf(':')-1));
					s = s.substr(s.indexOf(',')+1, s.length);
					if (s.indexOf(',') == -1) {
						def_array.push(s.substr(0, s.indexOf(':')));
						def_array.push(s.substr(s.indexOf(':')+1, s.length));
						return def_array;
					}
				}
				break;
			case 'object' :
				for (var i = 0; i<count; i++) {
					Obj[s.substr(0, s.indexOf(':'))] = s.substr(s.indexOf(':')+1, s.indexOf(',')-s.indexOf(':')-1);
					s = s.substr(s.indexOf(',')+1, s.length);
					if (s.indexOf(',') == -1) {
						Obj[s.substr(0, s.indexOf(':'))] = s.substr(s.indexOf(':')+1, s.length);
						return Obj;
					}
				}
				break;
			case '2array' :
				for (var i = 0; i<count; i++) {
					def_2array.push([s.substr(0, s.indexOf(':')), s.substr(s.indexOf(':')+1, s.indexOf(',')-s.indexOf(':')-1)]);
					s = s.substr(s.indexOf(',')+1, s.length);
					if (s.indexOf(',') == -1) {
						def_2array.push([s.substr(0, s.indexOf(':')), s.substr(s.indexOf(':')+1, s.length)]);
						return def_2array;
					}
				}
				break;
			default :
				return ['no method detected, please use a HELP function for true condition'];
				break;
		}


		return ['unkown error'];
	}
	public static function parseAndClear(s:String, a:Array, j:Array):String {
		count = s.length;
		for (var i = 0; i<count; i++) {
			if (a[i] != undefined && j[i] != undefined) {
				s = s.split(a[i]).join(j[i]);
				if (a[i+1] == undefined) {
					return s;
				}
			} else {
				return 'pls type true split array and join array';
			}
		}
	}
	public static function watch(s:String):String {
		trace("Watched string is : "+s);
		return s;
	}
	static function HELP(tf:TextField):Void {
		var str:String = "Welcome to JSON class helper.\nCreated by Alex Sigankov(c:tambov).\nHELP : \n";
		str += "Work with class functions : \n";
		str += "Open a new flash AS2 document, then place class folder, near where is u fla document was created, open Action panel on frame, and type :\n";
		str += "trace(com.JSON.function). For example : var str = 'flash : cool'; trace(com.JSON.convert(str,'2array')) // OUTPUT - [[flash,cool]].\n\n"
		str += "Function 'convert(string,method)' have 2 parametrs. 1st is a converted string, 2nd is a method of convert.\n";
		str += "There are 3 methods, such as : 1 - 'array', 2-'object', 3-'2array'";
		str += "\nFunction 'parseAndClear(string,split_array,join_array)' will delete and replace a new symbols in entered string";
		str += "\nExample : str = '4*5&7'; trace(com.JSON.parseAndClear(str,['*'],['&'])) //output : 4&5&7\n";
		str += "Function watch(string) will return input string.\n";
		str += "\nThx for using my class. good luck";
		if (tf) {
			tf.text = str;
		} else {
			trace(str);
		}
	}
	private static var version = 1.230710;
}


Последний раз редактировалось in4core; 24.07.2010 в 19:15.
Старый 25.07.2010, 15:11
Хемуль вне форума Посмотреть профиль Отправить личное сообщение для Хемуль Найти все сообщения от Хемуль
  № 2  
Ответить с цитированием
Хемуль
Квач
 
Аватар для Хемуль

Регистрация: Sep 2006
Адрес: Украина, Киев
Сообщений: 1,526
Так Google находит по "as2 json" очень быстро:
http://www.json.org/json.as
Ну и т.д.
__________________
Да не нужно тебе читать документацию по Flash и AS от Adobe - ты слишком умён для этого

Старый 25.07.2010, 15:19
in4core вне форума Посмотреть профиль Отправить личное сообщение для in4core Найти все сообщения от in4core
  № 3  
Ответить с цитированием
in4core
[+4 06.05.14]
 
Аватар для in4core

Регистрация: Mar 2009
Сообщений: 4,219
Записей в блоге: 14
Заценил, прикольно. Там геморно слишком у меня удобнее написано)))

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

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

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


 


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


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