2016-08-03 51 views
0

我想解决我的json结构中的未知字段,如下所示。我想要解决这个结构中的网关问题,我已经达到了semt.gateways那里我得到了这些领域,但现在我想要访问AAA和BBBB,但这些值(AAA或BBBB)可能会出现或不出现,具体取决于网关状态,所以它可能是CCCC或DDDD两个新的网关。如何解决json结构中未知的字段?

有没有办法解决这些领域?

由于提前,

{ 
    "router": { 
     "broadcast": { 
      "count": 7, 
      "rate_1": 0.010835197454271446, 
      "rate_15": 0.02788453406371163, 
      "rate_5": 0.005430725620930126 
     }, 
     "send": { 
      "count": 3, 
      "rate_1": 0.0016871408896396796, 
      "rate_15": 0.06962527561018554, 
      "rate_5": 0.010521501218758188 
     }, 
     "send_recipients": { 
      "avg": 1, 
      "max": 1, 
      "min": 1, 
      "p_25": 1, 
      "p_50": 1, 
      "p_75": 1 
     }, 
     "stat": { 
      "in": { 
       "count": 145, 
       "rate_1": 0.06743374503314854, 
       "rate_15": 0.058519644434074265, 
       "rate_5": 0.06641436790472173 
      } 
     }, 
     "uplink": { 
      "in": { 
       "count": 10, 
       "rate_1": 0.012522320815414685, 
       "rate_15": 0.02981672465254896, 
       "rate_5": 0.008197385273343911 
      }, 
      "negative_broker_response": { 
       "count": 6, 
       "rate_1": 0.010835197452761661, 
       "rate_15": 0.027646729205473473, 
       "rate_5": 0.005398046392581974 
      }, 
      "out": { 
       "count": 3, 
       "rate_1": 0.0016871408896396796, 
       "rate_15": 0.06962527561018554, 
       "rate_5": 0.010521501218758188 
      } 
     }, 
     "waiting_for_send": { 
      "count": 0 
     } 
    }, 
    "semt": { 
     "gateways": { 
      "AAA": { 
       "last_pull_data": { 
        "date": "2016-08-03T12:06:21Z" 
       }, 
       "last_push_data": { 
        "date": "2016-08-03T12:06:18Z" 
       }, 
       "pull_data": { 
        "count": 295, 
        "rate_1": 0.1041642570745486, 
        "rate_15": 0.09416326315994832, 
        "rate_5": 0.10078387259336224 
       }, 
       "push_data": { 
        "count": 102, 
        "rate_1": 0.05147652686982562, 
        "rate_15": 0.03543975773566928, 
        "rate_5": 0.03974814271702003 
       } 
      }, 
      "BBBB": { 
       "last_pull_data": { 
        "date": "2016-08-03T12:06:22Z" 
       }, 
       "last_push_data": { 
        "date": "2016-08-03T12:06:25Z" 
       }, 
       "pull_data": { 
        "count": 145, 
        "rate_1": 0.10405362006983286, 
        "rate_15": 0.11860991513624394, 
        "rate_5": 0.10040848429373028 
       }, 
       "push_data": { 
        "count": 53, 
        "rate_1": 0.028479538986283692, 
        "rate_15": 0.06878462929928854, 
        "rate_5": 0.03614229891544378 
       } 
      } 
     }, 
     "pull_data": { 
      "count": 440, 
      "rate_1": 0.208217877139802, 
      "rate_15": 0.17371766572905512, 
      "rate_5": 0.19970304027290767 
     }, 
     "push_data": { 
      "count": 155, 
      "rate_1": 0.07995606584855905, 
      "rate_15": 0.06384508343602703, 
      "rate_5": 0.07424449222265977 
     } 
    } 
} 
+0

的可能的复制[获取JavaScript对象密钥列表(http://stackoverflow.com/questions/3068534/getting-javascript-object-key-list) – str

回答

0

为什么你不只是做console.log(Object.keys(obj.semt.gateways))。下面是一个小提琴,让我知道如果你需要别的东西。

https://jsfiddle.net/yk48b9xr/

+0

感谢,但我想唯一的解决文件夹AAA或BBB,它的名称不是内容 – ndarkness

+0

Object.keys(obj.semt.gateways).filter(key => {return key =='AAA'或key =='BBB'}) (es6语法)。我普遍同意他的回答。如果这对你不起作用,我会考虑重新说明,并给出更多关于你的意思的例子。 –

+0

我编辑了这篇文章,我的意思是说,AAA,BBB可能会出现在网关上,或者不会在网关上发生变形,但是例如可以弹出一个新的,比如CCCC,所以我希望能够解决CCCC或者那GW没有提前知道它。 – ndarkness