2015-12-02 6 views
5

Given Jsonオブジェクト内のすべてのパスを取得する簡単な方法は何ですか?例について :jsonオブジェクト内のすべてのパスを出力するには

{ 
    app:{ 
     profiles:'default' 
    }, 
    application:{ 
     name:'Master Service', 
     id:'server-master' 
    }, 
    server:{ 
     protocol:'http', 
     host:'localhost', 
     port:8098, 
     context:null 
    } 
} 

Iは、次のオブジェクト

app.profiles=default 
application.name=Master Service 
application.id=server-master 

を生成することができるはず私は再帰関数を使用して同じことを達成することができました。私は、これを行うjsonの関数が組み込まれていることを知りたい。

+0

あなたはそのだけ一つだけのレベルを考慮するので、これは文句を言わない、目的を解決するため、あなたの再帰関数 – shintaroid

答えて

4

:ここで私が同じに関して見出される他の投稿です。このような

何か:

var YsakON = { // YsakObjectNotation 
    stringify: function(o, prefix) {   
    prefix = prefix || ''; 

    switch (typeof o) 
    { 
     case 'object': 
     if (Array.isArray(o)) 
      return prefix + '=' + JSON.stringify(o) + '\n'; 

     var output = ""; 
     for (var k in o) 
     { 
      if (o.hasOwnProperty(k)) 
      output += this.stringify(o[k], prefix + '.' + k); 
     } 
     return output; 
     case 'function': 
     return ""; 
     default: 
     return prefix + '=' + o + '\n'; 
    } 
    } 
}; 

// Usage: 
YaskON.stringify(obj); 

最高のコンバータの実装、ちょうど高速書かれた例はないが、それは主な原理を理解するためにあなたを助けるべきです。

ここにはworking JSFiddle demoがあります。

+0

おかげで、私はチェックしていたありますjsonが最終的に木構造であるので、すべての利用可能なパスを表示するために、関数inline関数fron jsonがあります。 – Ysak

1

これを行う組み込み関数はないと思います。私のフィドルでは以下のような単純なforループで行うことができます。しかし、再帰性は考慮しません。あなたは再帰的にオブジェクトを繰り返すことにより、カスタムコンバータを実装することができますPost1Post2Post3

var myjson = { 
    app:{ 
     profiles:'default' 
    }, 
    application:{ 
     name:'Master Service', 
     id:'server-master' 
    }, 
    server:{ 
     protocol:'http', 
     host:'localhost', 
     port:8098, 
     context:null 
    } 
}; 

for(key in myjson) { 
    for(k in myjson[key]) { 
    console.log(key + '.' + k + ' = '+ myjson[key][k]); 
    } 
} 

Fiddle

+1

を共有してくださいだろうYeldar Kurmangaliyev – Ysak

+0

はいにより与えられたとして、それは再帰的である必要があります:)アイブ氏の答えを更新し – VishwaKumar

関連する問題