Вопросы по многомерным 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, время: 05:09. |