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

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

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 21.12.2010, 11:41
ERrorMAKros вне форума Посмотреть профиль Отправить личное сообщение для ERrorMAKros Посетить домашнюю страницу ERrorMAKros Найти все сообщения от ERrorMAKros
  № 1  
Ответить с цитированием
ERrorMAKros
 
Аватар для ERrorMAKros

Регистрация: May 2008
Адрес: Земля.Украина.Одесса
Сообщений: 219
Отправить сообщение для ERrorMAKros с помощью ICQ Отправить сообщение для ERrorMAKros с помощью Skype™
Question Object to String

Друзья, подскажите пожалуйста есть ли способ преобразовать object (со всеми сложенными в него элементами) в string? Речь идет о таком вот объекте (к примеру):
Код AS3:
var objValue:Object = { a: "10", b:true, c:{ sub_c:"str", next_sub:[1, 2, 3, 4, 5], end_sub:234.4 }};
Бывает очень-очень нужно при trace`еровке показать все ветки объекта, что бы рассмотреть его в таком вот виде:
Код:
a: 10
c: [Object]
   end_sub: 234.4
   sub_c: "str"
   next_sub: [Array]
      0: 1
      1: 2
      2: 3
      3: 4
      4: 5
b: true
Может есть какая то волшебная фун-ция, потому как через рекурсию у меня что то не получается ((

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

блогер
Регистрация: Mar 2007
Сообщений: 1,291
Записей в блоге: 5
Отправить сообщение для cleptoman с помощью ICQ
есть волшебный JSON, правда переносы строк он не втыкает, потому будет не так наглядно )
__________________
http://cleptoman.free-lance.ru
achivements: дважды благословлен на воровство. осеяный благодатью

Старый 21.12.2010, 11:50
bav вне форума Посмотреть профиль Отправить личное сообщение для bav Найти все сообщения от bav
  № 3  
Ответить с цитированием
bav
 
Аватар для bav

Регистрация: Oct 2010
Сообщений: 1,049
Отправить сообщение для bav с помощью ICQ
Код AS3:
public function look (object:*):String
{
	var result:String = "";
	if (!object || object is Boolean || object is int || object is String || object is Number)
	{
		result += "(" + String(object) + ")";
	}
	else if (object is Array)
	{
		result += "[";
		for (var i:int = 0; i < object.length; i++)
		{
			result += look(object[i]);
		}
		result += "]";
	}
	else if (object is Object)
	{
		result += "{";
		for (var key:* in object)
		{
			result += String(key) + ":" + look( object[key] );
		}
		result += "}";
	}
	return result;
}
Модифицируйте по необходимости.


Последний раз редактировалось bav; 21.12.2010 в 11:54.
Старый 21.12.2010, 11:54
cleptoman вне форума Посмотреть профиль Отправить личное сообщение для cleptoman Найти все сообщения от cleptoman
  № 4  
Ответить с цитированием
cleptoman
 
Аватар для cleptoman

блогер
Регистрация: Mar 2007
Сообщений: 1,291
Записей в блоге: 5
Отправить сообщение для cleptoman с помощью ICQ
2 bav,
Код AS3:
var i:int = 5;
trace(i is Number)//true
потому object is int лишний, наверное
__________________
http://cleptoman.free-lance.ru
achivements: дважды благословлен на воровство. осеяный благодатью

Старый 21.12.2010, 11:57
bav вне форума Посмотреть профиль Отправить личное сообщение для bav Найти все сообщения от bav
  № 5  
Ответить с цитированием
bav
 
Аватар для bav

Регистрация: Oct 2010
Сообщений: 1,049
Отправить сообщение для bav с помощью ICQ
Да, пожалуй.

Старый 21.12.2010, 12:03
-De- вне форума Посмотреть профиль Отправить личное сообщение для -De- Найти все сообщения от -De-
  № 6  
Ответить с цитированием
-De-
 
Аватар для -De-

блогер
Регистрация: Oct 2005
Адрес: Днепродзержинск - город Брежнева и других логопедов
Сообщений: 1,421
Записей в блоге: 4
Отправить сообщение для -De- с помощью ICQ Отправить сообщение для -De- с помощью Skype™
Код AS3:
public function Main():void 
		{
			var objValue:Object = { a: "10", b:true, c:{ sub_c:"str", next_sub:[1, 2, 3, 4, 5], end_sub:234.4 }};
			changeTree2(objValue,"objValue", "");
		}
 
		private function changeTree2(xml:*, _name:String, indent:String):void {
			var iterate:Boolean = true;
			if (typeof xml == "object" && !(xml is Array)) {
				trace(indent + _name + ": [Object]");
			}
			else if (xml is Array) {
				trace(indent + _name + ": [Array]");
			}
			else {
				iterate = false;
				trace(indent +  _name + ": " + String(xml));
			}
			if(iterate) {
				for (var newName:String in xml) {
					changeTree2(xml[newName], newName, indent+"\t");
				}
			}
		}
__________________
Бобры отвечают на вопросы не потому, что знают на них ответы; они отвечают потому, что их спрашивают.

Старый 21.12.2010, 12:25
ERrorMAKros вне форума Посмотреть профиль Отправить личное сообщение для ERrorMAKros Посетить домашнюю страницу ERrorMAKros Найти все сообщения от ERrorMAKros
  № 7  
Ответить с цитированием
ERrorMAKros
 
Аватар для ERrorMAKros

Регистрация: May 2008
Адрес: Земля.Украина.Одесса
Сообщений: 219
Отправить сообщение для ERrorMAKros с помощью ICQ Отправить сообщение для ERrorMAKros с помощью Skype™
О, ребята благодарю за код! Вы облегчили мне жизнь!!!!!!

Добавлено через 2 часа 39 минут
А вот еще вопрос, нельзя ли результаты не выводить последовательно через trace, а реализовать задачу так, что бы в итоге получилась суммарная переменная string вида. Например:
Код AS3:
var objValue:Object = { a:'10', b:true, c:{ sub_c:'str', next_sub:[1, 2, 3, 4, 5], end_sub:234.4 }};
function objectToString(objValue:Object):String{
// тело
}
var strObjData:String = objectToString(objValue);
trace(strObjData);
output:
Код:
a: 10
c: [Object]
   end_sub: 234.4
   sub_c: "str"
   next_sub: [Array]
      0: 1
      1: 2
      2: 3
      3: 4
      4: 5
b: true
....???

Добавлено через 2 часа 46 минут
Переделал вот в такой вариант:
Код AS3:
function changeTree2(xml:*, _name:String, indent:String, save:String = ''):String {
var iterate:Boolean = true;
if (typeof xml == "object" && !(xml is Array)) save+=indent + _name + ": [Object]\n";
else if (xml is Array) save+=indent + _name + ": [Array]\n";
else {	iterate = false;
		save+=indent +  _name + ": " + String(xml)+'\n';
		} if(iterate) for (var newName:String in xml) save+=changeTree2(xml[newName], newName, indent+"\t");
return save;
}
 
 
var objValue:Object = { a: "10", b:true, c:{ sub_c:"str", next_sub:[1, 2, 3, 4, 5], end_sub:234.4 }};
var strObj:String = changeTree2(objValue,"objValue", "");
trace(strObj);


Последний раз редактировалось ERrorMAKros; 21.12.2010 в 15:05.
Старый 21.12.2010, 22:31
nOobCrafter вне форума Посмотреть профиль Отправить личное сообщение для nOobCrafter Найти все сообщения от nOobCrafter
  № 8  
Ответить с цитированием
nOobCrafter

Регистрация: Nov 2008
Сообщений: 894
Записей в блоге: 1
советую потрогать этот класс: com.maccherone.json.JSON если сделать
Код AS3:
trace(JSON.encode(myObject, true));
то мы получим красивый результат без лишней головоломки. Вот пример того что на выходе:
Код AS1/AS2:
{
    "allow_swap": true,
    "field": "1",
    "action_log": "",
    "item_hint": 101,
    "update_required": false,
    "update_time": 26,
    "turns": "6",
    "last_swap": false,
    "score": "-5",
    "game_data": [
        {
            "gi_creation_postdate": "1292955762",
            "gi_item4": "0",
            "gi_cat_food_type": "0",
            "gi_cat_food_eaten": "0",
            "gi_item3": "0",
            "gi_item2": "0",
            "gi_item1": "1016",
            "gi_cat_sleep_time": "0",
            "gi_special_component": "N",
            "gi_id": "111409",
            "gi_y": "4",
            "gi_state": "NORMAL",
            "gi_game_id": "1375",
            "gi_x": "3",
            "gi_shrimp_direction": "LEFT"
        },
        {
            "gi_creation_postdate": "1292955719",
            "gi_item4": "6",
            "gi_cat_food_type": "0",
            "gi_cat_food_eaten": "0",
            "gi_item3": "3",
            "gi_item2": "2",
            "gi_item1": "1013",
            "gi_cat_sleep_time": "0",
            "gi_special_component": "N",
            "gi_id": "111384",
            "gi_y": "3",
            "gi_state": "NORMAL",
            "gi_game_id": "1375",
            "gi_x": "4",
            "gi_shrimp_direction": "LEFT"
        }
    ],
    "action_data": [],
    "post_game_data": [],
    "paused": false,
    "filled_cans": "0"
}

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

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

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


 


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


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