Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/42.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 搜索深度JSON文件_Javascript_Node.js_Json - Fatal编程技术网

Javascript 搜索深度JSON文件

Javascript 搜索深度JSON文件,javascript,node.js,json,Javascript,Node.js,Json,我想通过从内部寻找一个特殊的键来找到一个JSON对象。 例如,在以下情况下: { "1": { "name": "usa", "position": 8, "code": 1, "other": false, "new": false, "enabled": true, &quo

我想通过从内部寻找一个特殊的键来找到一个JSON对象。 例如,在以下情况下:

{
  "1": {
    "name": "usa",
    "position": 8,
    "code": 1,
    "other": false,
    "new": false,
    "enabled": true,
    "services": {
      "service_vkcom": {
        "count": 6039,
        "popular": false,
        "code": 1,
        "id": 1,
        "service": "Вконтакте",
        "slug": "vkcom"
      },
      "service_3223": {
        "count": 4053,
        "popular": false,
        "code": 1,
        "id": 2,
        "service": "Facebook",
        "slug": 3223
      }
}

查找“usa”一词,我希望整个“1”的内容都能回到我的脑海中。

您可以递归地搜索
值并返回它所在的对象:

让obj={
"1": {
“名称”:“美国”,
“立场”:8,
"守则":一,,
“其他”:假,
“新”:假,
“启用”:正确,
“服务”:{
“服务_vkcom”:{
“计数”:6039,
“大众”:假,
"守则":一,,
“id”:1,
“服务”:“服务”,
“slug”:“vkcom”
},
“服务_3223”:{
“计数”:4053,
“大众”:假,
"守则":一,,
“id”:2,
“服务”:“Facebook”,
“鼻涕虫”:3223
}
}
}
};
函数getParent(对象、值){
设res=[];
for(让p在obj中)
if(typeof(obj[p])=='object')
res=res.concat(getParent(obj[p],val));
else if(obj[p]==val)
res.push(obj);
返回res;
}
console.log(getParent(obj,usa));
日志(getParent(obj,6039));

log(getParent(obj,Facebook))以下是一个使用

//const objectScan=require('object-scan');
const data={“1”:{“name”:“usa”,“position”:8,“code”:1,“other”:false,“new”:false,“enabled”:true,“services”:{“serviceèu vkcom”:{“count”:6039,“popular”:false,“code”:1,“id”:1,“service”:“jbèèè”、“slug”:“vkcom”},“serviceè3223:{“count”:4053,“popular”:false,“code”:1,“id”:2,“service”:“Facebook”,“slug”:3223};
const find=(obj,name)=>objectScan(['**.name']{
中止:对,
rtn:'父',
filterFn:({value})=>value==name
})(obj);
console.log(查找(数据“usa”);
//=>{name:'usa',position:8,code:1,other:false,new:false,enabled:true,services:{service_vkcom:{count:6039,popular:false,code:1,id:1,services:'bbааimk e',slug:'vkcom',services_3223:{count 4053,popular false,code:1,id:2,services:'Facebook',slug:3223}
。作为控制台包装{最大高度:100%!重要;顶部:0}

这个词能埋多深?只有第一层?你试过什么?有代码要显示吗?您知道要搜索哪些字段吗…或者任何字段?你的标准有点模糊,因为我的JSON不在数组中,我不能做任何过滤,等等。。。事实上,我的名字不能比上面的例子中的名字低。@charlietfl我只想按名字搜索并返回与名字相关的整个对象(在我的例子中,它是1)谢谢@lawrencerone,但正如Eugen Sunic提到的,这对深层对象不起作用