Показать сообщение отдельно
  #1 (permalink)  
Старый 01.12.2010, 04:23
Новичок на форуме
Отправить личное сообщение для нечто Посмотреть профиль Найти все сообщения от нечто
 
Регистрация: 01.12.2010
Сообщений: 2

Как изменить значение JSON ?
Всем привет!

Имею JSON массив типа этого:
data = { "1": { "qq": "ww", "ee": "rr" }, "2": { "qq2": "ww3", "ee4": "rr5" } }


И надо поменять одно из значений одного под-массива.
Пробую:
jsondata["1"]["ww"] = "new value!";

jsondata["1"].ww = "new value!";

setData("1.ww", "new value!");


Любой из этих 3 способ ставит значение "new value!" не только у элемента "ww" из под-массива "1", но и у всех остальных элементов "ww"!

Что я делаю не так?



Функция setData:
function setData(key, val, obj)
	{
		if (!obj) obj = data; //outside (non-recursive) call, use "data" as our base object
		var ka = key.split(/\./); //split the key by the dots
		if (ka.length < 2)
		{
			obj[ka[0]] = val; //only one part (no dots) in key, just set value
		}
		else
		{
			if (!obj[ka[0]]) obj[ka[0]] = {}; //create our "new" base obj if it doesn't exist
			obj = obj[ka.shift()]; //remove the new "base" obj from string array, and hold actual object for recursive call
			setData(ka.join("."),val,obj); //join the remaining parts back up with dots, and recursively set data on our new "base" obj
		}
	}
Ответить с цитированием