Показать сообщение отдельно
Старый 08.11.2014, 13:54
GrafMine вне форума Посмотреть профиль Отправить личное сообщение для GrafMine Найти все сообщения от GrafMine
  № 5  
Ответить с цитированием
GrafMine
 
Аватар для GrafMine

Регистрация: Jan 2011
Сообщений: 247
Да, с этим я как раз и столкнулся, это можно как-то написать не сильно громоздко ?

Добавлено через 1 час 4 минуты
Цитата:
Сообщение от silin Посмотреть сообщение
Код AS3:
function objToSring(obj:Object):String
{
	var res:String = "";
	for ( var key:String in obj ) 
	{
		res += key + "=" + (objToSring(obj[key]) || obj[key]);
	}
	return res;
}
но вот с порядком имен никак, имхо - порядок будет непредсказуемым
Спасибо, ну логика построения строки не такая как я писал выше по вашему примеру вывело с учетом без сортировки так :
Код AS3:
//main2=key2=key2.2=text2key2.1=text1key1=key1.1=text1key1.2=text2main1=key2=key2.2=text2key2.1=text1key1=key1.1=text1key1.2=text2
а должно быть вот так :
//main2=key2key2.2=text2key2.1=text1main2=key1key1.1=text1key1.2=text2main1=key2key2.2=text2key2.1=text1main1=key1key1.1=text1key1.2=text2
я дошел до этого :

Код AS3:
package {
import flash.display.Sprite;
 
public class Recursion extends Sprite {
    public function Recursion() {
        var smtArray:Array = [{
            "main1": {
                "key1": {
                    "key1.1": "text1", "key1.2": "text2"
                },
                "key2": {
                    "key2.1": "text1", "key2.2": "text2"
                }
            },
            "main2": {
                "key1": {
                    "key1.1": "text1", "key1.2": "text2"
                },
                "key2": {
                    "key2.1": "text1", "key2.2": "text2"
                }
            }
        }];
        trace(convertToString(smtArray[0]));
    }
 
    private function convertToString(obj:*):String {
        var res:String = "";
 
        if(obj is Object){
            // получаем имена ключей с обьекта(хеш мапы)
            var namesHM:Array=[];
            for ( var key:String in obj ){
                namesHM.push(key);
            }
            namesHM.sort();//сортируем по имени
            for(var n:int=0; n<namesHM.length;n++){
                res += namesHM[n] +'='+convertToString(obj[namesHM[n]]);
            }
            return res;
        }else{//типа тут строка
            return obj;
        }
    }
}
}
 
output:
//main1=key1=key1.1=key1.2=key2=key2.1=key2.2=main2=key1=key1.1=key1.2=key2=key2.1=key2.2=
результат отсортирован ну логика построения строки не соответсвует, есть идеи ?


Последний раз редактировалось GrafMine; 08.11.2014 в 15:20.