Сериализация ассоциативного массива (его эмуляции) в javaScript

Бочонок

http://frontender.info
Сериализация ассоциативного массива (его эмуляции) в javaScript

Доброго времени суток.

Есть массив объектов(goods), который надо сериализовать что бы записать в cookie и потом оттуда достать.

PHP:
function shoping_card(){
	var goods={};
	this.add = function(article,name,count,weight,discount,price){
		goods[article] = {
			"article" : article,
			"name" : name,
			"count" : count,
			"weight" : weight,
			"discount" : discount,
			"price" : price
		}
      }
}
Попробовал найти что то в сети... но ни
http://kevin.vanzonneveld.net/techblog/article/javascript_equivalent_for_phps_serialize/
http://kevin.vanzonneveld.net/techblog/article/javascript_equivalent_for_phps_unserialize/
ни
http://www.onegeek.com.au/articles/programming/javascript-serialization.php
ни справились с тем что бы на входе получить goods сериализовать, десериализовать и получить его еще и на выходе.

Что то подсказывает, что стоит использовать JSON... вот только я с ним раньше не сталкивался и не могу сообразить - как из goods получить строку в формате JSON а потом из строки вернуть все в начальное состояние...

Подскажите что, то пожалуйста.

-~{}~ 17.12.08 19:28:

Подозреваю что надо так:

PHP:
//сохранение
setCookie("card",JSON.stringify(goods));
//загрузка
goods=JSON.parse(getCookie("card"));
Вот только не работает :(
 

dimagolov

Новичок
Бочонок, в JS нету ассоциативных массивов, но можно их частично эмулировать объектами:
PHP:
assoc= { name1 : 'val1', name2 : 'val2' };
alert (assoc['name1']);
assoc['name1']= 'new_val';
очевидно, что после прогона через JSON в PHP они будут тоже объектами, а не массивами. кроме того вообще не уверен, что JSON такое умеет, смотреть надо.
 

Бочонок

http://frontender.info
2dimagolov: Эм... так я как раз и эмулировал.
Ошибку нашел - оказалась несвязанной с методом передачи данных. JSON подошел идеально. Уже работает везде кроме IE6... сейчас выясняю почему.

http://amarillis.com.ua/shop.php - вот собственно результат. корзина в верхнем правом углу.
 
Сверху