Вопросы по многомерным JSON - замена
srcJson = {"status":"success","ip":"70.84.83.22","ip_version":"ipv4","country":{"alpha-2":"US","alpha-3":"USA","name":"United States","phone":"1"},"continent":{"code":"NA","name":"North America"}} id = "status"; str = str.replace(new RegExp('('+id+')','g'), srcJson[id]); alert(str); Так я получаю alert с "success" А если id = "country.name"; По идеи я должен получить "United States". Но нет. Почему? Спасибо. |
Цитата:
Цитата:
srcJson = {"status":"success","ip":"70.84.83.22","ip_version":"ipv4","country":{"alpha-2":"US","alpha-3":"USA","name":"United States","phone":"1"},"continent":{"code":"NA","name":"North America"}} id = "status"; str = str.replace(new RegExp('('+id+')','g'), srcJson[id]); alert(str); |
Цитата:
Можно написать функцию, которая будет возвращать вам необходимый результат, но, по-моему, здесь и без нее спокойно можно обойтись. |
var obj={a:{b:'c'}}, key='a.b.c', get_object_property_by_key=function(object,key){ if(typeof object!='object') return object; key=key.split('.'); for(var i=0;i<key.length;i++){ if(!object[key[i]]) return object; else object=object[key[i]]; }; return object; }; alert(get_object_property_by_key(obj,key)); |
dima85,
str = str.replace(new RegExp('('+id+')','g'), eval("srcJson."+id)); |
Nexus спасибо.
рони, как всегда шикарное решение. Спасибо! |
@рони, подскажите как это сделать без учета регистра?
Пробовал добавить i но не помогло. str = str.replace(new RegExp('('+id+')','gi'), eval("srcJson."+id)); |
Цитата:
srcJson = {"status":"success","ip":"70.84.83.22","ip_version":"ipv4","country":{"alpha-2":"US","alpha-3":"USA","name":"United States","phone":"1"},"continent":{"code":"NA","name":"North America"}} str = "Status test" id = "status"; str = str.replace(new RegExp('('+id+')','gi'), eval("srcJson."+id)); alert(str); |
Извиняюсь, вот пример: В srcJson мы имеем IP большими буквами, в других местах с маленькими.
srcJson = {"status":"success","IP":"70.84.83.22","ip_version":"ipv4"} str = "test ip test" id = "ip"; str = str.replace(new RegExp('('+id+')','gi'), eval("srcJson."+id)); alert(str); |
dima85,
RegExp тут не причём, меняйте алгоритм, ключ обьекта регистрозависим. |
Часовой пояс GMT +3, время: 00:41. |