2016-06-21 5 views
5

JSON अंश के माध्यम से बार-बार दोहराना जबकि:मैं कैसे एक JSON पेड़ में एक नोड के नेविगेशन पथ प्राप्त कर सकते हैं ट्री

{ 
    "a": { 
     "b1" : { 
      "c1" : { 
       "d1" : "D1", 
       "d2" : "D2", 
       "d3" : "D3" 
      }, 
      "c2" : { 
       "d4" : "D4", 
       "d5" : "D5" 
      } 
     }, 
     "b2" : { 
      "c3" : { 
       "d6" : D6 
      } 
     } 
    } 
} 

मैं JSON ट्री पुनरावृति और 'प' श्रृंखला मानों की सूची प्राप्त करने के लिए चाहते हैं प्रत्येक 'प' नोड के नेविगेशन पथ, जैसे

[{'name': 'd1', 'value': 'D1', 'path': ['a', 'b1', 'c1']},...] 

यहाँ के साथ, मैं एक समारोह के रूप में निम्न प्रकार लिखा है:

 function GetParameters(obj) { 
      for (var sProp in obj) { 
       if(typeof(obj[sProp]) == "string") { 
        parameters.push({'name':sProp,'value':obj[sProp]})          
       } else { 
        GetParameters(obj[sProp]);        
       } 
      }    
     } 

यह फ़ंक्शन प्रत्येक 'डी' रिकॉर्ड के 'नाम' और 'मान' भाग उत्पन्न करता है, लेकिन मैं इस फ़ंक्शन में 'पथ' भाग कैसे प्राप्त कर सकता हूं?

किसी भी कामकाज का स्वागत है। धन्यवाद!

उत्तर

1

आप अगले पुनरावृत्ति के वास्तविक पथ की आपूर्ति के साथ एक पुनरावर्तक और पुनरावर्ती दृष्टिकोण का उपयोग कर सकते हैं।

यदि कोई अंत नोड पाया जाता है, तो नयी ऑब्जेक्ट के साथ परिणाम सरणी में एक नई वस्तु को धक्का दिया जाता है।

function getPath(object) { 
 

 
    function iter(o, path) { 
 
     Object.keys(o).forEach(function (k) { 
 
      if (typeof o[k] === 'object') { 
 
       return iter(o[k], path.concat(k)); 
 
      } 
 
      result.push({ name: k, value: o[k], path: path }); 
 
     }); 
 
    } 
 

 
    var result = []; 
 
    iter(object, []); 
 
    return result; 
 
} 
 

 
var data = { "a": { "b1": { "c1": { "d1": "D1", "d2": "D2", "d3": "D3" }, "c2": { "d4": "D4", "d5": "D5" } }, "b2": { "c3": { "d6": "D6" } } } }; 
 

 
console.log(getPath(data));

+0

लगता है कि यह काम करता है मत करो! –

+0

इसके साथ क्या गलत है? –

+0

एक यह है कि, आप एक नया तर्क 'खोज' जोड़ते हैं जिसे मैं प्रदान नहीं कर सकता। दूसरा नतीजा यह नहीं है कि क्या चाहता है। –

संबंधित मुद्दे