2014-10-08 2 views
0

Что касается вопроса размещена здесь use jQuery's find() on JSON object У меня есть объект JSON, в котором я хотел бы искать значение элемента, если я прошел соответствующий ключевой элемент к немунаходят значение пара в объекте JSON с помощью ключевого элемента

Json:

{"RESPONSE":{"@xmlns":"","CODE":"0","SECODE":"0","TXNID":"17527","LASTBALANCE":"-12078.8","SURCHARGE":"2","CUSTOMERDETAILS":{"NAME":"Mr.ABC"}}} 

Я хочу, чтобы получить значение Mr.ABC, когда я проходил Name как ключ к моей функции

Код:

console.log(getObjects(ContextObj, 'Name')); 

function getObjects(obj, key) { 
    var objects = []; 
    for (var i in obj) { 
     if (!obj.hasOwnProperty(i)) continue; 
     if (i == key) { 
      objects.push(obj); 
     } 
    } 
    return objects; 
} 

Это дает выход теперь, как

[ ] 

ответ

1

Попробуйте это:

var data = {"RESPONSE":{"@xmlns":"","CODE":"0","SECODE":"0","TXNID":"17527","LASTBALANCE":"-12078.8","SURCHARGE":"2","CUSTOMERDETAILS":{"NAME":"Mr.ABC"}}}; 
function find_value(key, inner_key) { 
    var value = ""; 
    $.each(data.RESPONSE, function (i, k) { 
     console.log(i, key, i == key) 
     if (i == key) { 
      value = k; 
      return false; 
     } 
    }); 
    if (inner_key) { 
     if (value[inner_key]) { 
      value = value[inner_key]; 
     } 
    } 
    return value; 
} 

Вызов функции:

find_value("LASTBALANCE"); 
find_value("CUSTOMERDETAILS", "NAME"); 

See DEMO here.

1

Вы должны вызвать ваш код рекурсивной для вложенных ключей JSon как,

var s={"RESPONSE":{"@xmlns":"","CODE":"0","SECODE":"0","TXNID":"17527","LASTBALANCE":"-12078.8","SURCHARGE":"2","CUSTOMERDETAILS":{"NAME":"Mr.ABC"}}}; 
console.log(getObjects(s, 'NAME')); 
console.log(getObjects(s, 'LASTBALANCE')); 

function getObjects(obj, key) { 
    var objects = []; 
    for (var i in obj) { 
     if(typeof obj[i] == 'object'){ 
      return getObjects(obj[i], key); // if it is an object then find the key recursively. 
     } 
     if (!obj.hasOwnProperty(i)) continue; 

     if (i == key) { 
      return obj[key]; 
     } 
    } 
    return ''; 
} 

Рабочая DEMO

+0

+1 рекурсии! – Shaggy

Смежные вопросы