PDA

Просмотр полной версии : Передача массива из php в flash. Как распарсить ответ в actionscript 2?


dosya
12.02.2015, 20:35
Здравствуйте, не получается распарсить массив который был преобразован в пхп который взял контент из mysql.
Сам ответ(Массив) из php выглядит так:
{friend:'user1',status:1,relationship:'0'};{friend:'user2',status:2,relationship:'Братья'};{friend:'user3',status:0,relationship:'Коллеги'}
Строил его под прихоти AS2;
Теперь принимаю его на стороне Флеша, далее загонял в массив, но все тщетно каждый i-ый элемент являлся String-овым, так что я умудрился разбить все с дного массива в другой преобразовывая его в Object(Ну шоб из {_} получить параметры) и сохранял каждый элемент в новый массив. Проверял через typeof(); все катит OBJECT Аллилуйя, но далее пробую вытащить из него что-то но опять этот undefined -_-"
Пробовал все сделать не через запрос в пхп а просто создать массив с обджектами все хорошо выводит. Кстать это все называется associative array. Все выводится как и в инете таких полно. Но именно у меня с внешним эррэйем все сложно.
И еще одно: чтоб загнать все это Стринговое значение в массив я был вынужден split-ом вырезать ; (точку с запятой) ну чтоб рассматривать их как отдельные элементы.
Пожалуйста помогите, буду признателен.
Вот и сам код:

var firstarray:Array=new Array();
var friendsarray:Array=new Array() ;
var returner:LoadVars = new LoadVars();
var obj:Object=new Object();
on (release) {
sendXML = new XML("&login=" + escape(login));
sendXML.sendAndLoad("data/friends.php",returner,"POST");
returner.onLoad = function(success:Boolean)
{
firstarray = returner.arrayfromserver.split(";");
firstarray.sortOn(["friend", "status" ]);
for (i = 0; i < firstarray.length; i++)
{
obj=Object(firstarray[i]);
friendsarray.push(obj);
pole =pole+friendsarray[i].friend+" ";
}
};
}

dark256
13.02.2015, 10:45
Все это у вас называется JSON. Формат ответа.
Ищите по форуму парсер. Я уже раза 3 кидал его в эту ветку за последние пару месяцев.

nubideus
13.02.2015, 10:46
это не json

dark256
13.02.2015, 11:00
Да. Согласен. Не он. А похож, чертяка :)

Добавлено через 18 минут
С учетом того, что ФОРМАТ расположения всех знаков препинания стандартный:

var sj = "{friend:'user1',status:1,relationship:'0'};{friend:'user2',status:2,relationship:'Братья'};{friend:'user3',status:0,relationship:'Коллеги'}"


var ARRREZ:Array = new Array()
var ARR1:Array = sj.split(";") // Режем массив по ;

for ( var i=0; i<ARR1.length; i++ ){
trace( "Source Array Item String:"+ARR1[i] )

var tmp1 = ARR1[i].split("{")[1].split("}")[0].split(",") // Выкидываем {}
var tmpobj = ARRREZ[ARRREZ.length] = new Object()

for( var j=0; j<tmp1.length; j++){
var tmp2 = tmp1[j].split(":")
if ( tmp2[1].indexOf("'") >= 0 ) tmp2[1] = tmp2[1].split("'")[1] // Выкидываем ''
tmpobj[tmp2[0]] = tmp2[1]
}

for ( var w in tmpobj ) {
trace( " "+w+" = "+tmpobj[w] )
}
}

trace( "\nTEST:"+ARRREZ[1].friend )

dark256
13.02.2015, 11:20
31425

dosya
13.02.2015, 18:48
Спасибо вам большое. Вы еще и код написали. Спасибо, Ой а как здесь закрыть форум, и объявить ваш ответ как верным ответом?