使用JSON.search在defiant.js中返回多个对象

时间:2015-08-12 13:27:52

标签: javascript json

我有一个具有它的属性的Json对象。我使用defiant.js用类似于XPath的命令搜索JSON。

enter image description here

是否有一个函数可以检索以前缀开头的json的所有对象?例如,所有以' en _'在上面的截图中?

2 个答案:

答案 0 :(得分:2)

尝试使用此XPath选择器... /*/*[starts-with(name(),"en_")]

使用defiant.js@1.3.1 ...

看起来效果很好

var x = {
    "thing": "cool",
    "en_item": "awesome",
    "en_other": "awesome",
    "inner": {
        "en_thing": "less than cool"
    },
    "en_yetanother": "awesome",
    "notit": "rubbish"
}

alert(JSON.search(x, '/*/*[starts-with(name(),"en_")]'))
<script src="//cdnjs.cloudflare.com/ajax/libs/defiant.js/1.3.1/defiant.min.js"></script>

答案 1 :(得分:0)

您可以执行此操作,例如for周期添加了hasOwnProperty检查,如下所示:

var filteredObject = {};
//obj - your source object

for(i in obj) { 
  if(obj.hasOwnProperty(i) && i.indexOf('en_') > -1){
    filteredObject[i] = obj[i];
  }
}