使用Javascript过滤Json

使用Javascript过滤Json,javascript,arrays,json,filter,Javascript,Arrays,Json,Filter,您好,您能帮我过滤一下这样的Json对象吗: { "data": { "statuses": [{ "entities": { "urls": [], "user_mentions": [{ "screen_name": "name1" }] }, "entities

您好,您能帮我过滤一下这样的Json对象吗:

{
    "data": {
        "statuses": [{
            "entities": {
                "urls": [],
                "user_mentions": [{
                    "screen_name": "name1"
                }]
            },
            "entities": {
                "urls": [],
                "user_mentions": [{
                    "screen_name": "name2"
                }]
            },
            "entities": {
                "urls": [],
                "user_mentions": [{
                    "screen_name": "name3"
                }]
            }
        }]
    }
}
我需要得到一个数组,其中包含每个键的屏幕名称的值。 例如:
array=[“name1”、“name2”、“name3”]
如果没有只使用JS的框架,我如何做到这一点

谢谢你的帮助。我已将Json更新为如下内容:

var obj = {
"data": {
    "statuses": [{
        "urls": [],
        "user_mentions": [{
            "indices": [
                3,
                16
            ],
            "id_str": "626444770",
            "id": 626444770,
            "name": "katheryn",
            "screen_name": "sella_sandra"
        }, {
            "indices": [
                "***",
                "***"
            ],
            "id_str": "21447363",
            "id": 21447363,
            "name": "KATY PERRY",
            "screen_name": "katyperry"
        }, {
            "indices": [
                "***",
                "***"
            ],
            "id_str": "21447363",
            "id": 21447363,
            "name": "KATY PERRY",
            "screen_name": "floyd"
        }]
    }]
}
我想得到屏幕名称的数组。我写了这样的代码。但是当我使用时。它在这里不起作用:

console.log(状态[0]。用户提到[i]。屏幕名称)
我没有犯愚蠢的错误,但我不知道该如何纠正。救命啊

var statuses = obj.data.statuses;
for (var i=0; i<statuses.length; i++ )

 { if ( typeof statuses[0].user_mentions !== "undefined")
            {    
               for (var i=0; i<statuses.length; i++){
                  console.log (statuses[0].user_mentions[i].screen_name);
            }
        } 

    else console.log ="No senders";
}
var status=obj.data.status;

对于(var i=0;i您的语法不正确,因为在
status
数组中不能有另一个键值数据

删除
实体
键名(假设它只是一个对象数组),然后尝试以下操作

var obj = { "data": {
  "statuses": [
    {
      "urls": [],
      "user_mentions": [{
        "screen_name": "name1"
      }]
    },
    {  
      "urls": [],
      "user_mentions": [{
        "screen_name": "name2"
      }]
    },
    {  
      "urls": [],
      "user_mentions": [{
        "screen_name": "name3"
      }]
    }
  ]
} };

var statuses = obj.data.statuses;
var names = [];
for (var counter = 0; counter < statuses.length; counter++ )
{
   names.push( statuses[ counter ].user_mentions[0].screen_name ); 
}
console.log( names );
var obj={“数据”:{
“状态”:[
{
“URL”:[],
“用户_提到”:[{
“屏幕名称”:“名称1”
}]
},
{  
“URL”:[],
“用户_提到”:[{
“屏幕名称”:“名称2”
}]
},
{  
“URL”:[],
“用户_提到”:[{
“屏幕名称”:“名称3”
}]
}
]
} };
var状态=对象数据状态;
变量名称=[];
用于(变量计数器=0;计数器
您的语法不正确,因为在
status
数组中不能有其他键值数据

删除
实体
键名(假设它只是一个对象数组),然后尝试以下操作

var obj = { "data": {
  "statuses": [
    {
      "urls": [],
      "user_mentions": [{
        "screen_name": "name1"
      }]
    },
    {  
      "urls": [],
      "user_mentions": [{
        "screen_name": "name2"
      }]
    },
    {  
      "urls": [],
      "user_mentions": [{
        "screen_name": "name3"
      }]
    }
  ]
} };

var statuses = obj.data.statuses;
var names = [];
for (var counter = 0; counter < statuses.length; counter++ )
{
   names.push( statuses[ counter ].user_mentions[0].screen_name ); 
}
console.log( names );
var obj={“数据”:{
“状态”:[
{
“URL”:[],
“用户_提到”:[{
“屏幕名称”:“名称1”
}]
},
{  
“URL”:[],
“用户_提到”:[{
“屏幕名称”:“名称2”
}]
},
{  
“URL”:[],
“用户_提到”:[{
“屏幕名称”:“名称3”
}]
}
]
} };
var状态=对象数据状态;
变量名称=[];
用于(变量计数器=0;计数器
给定更新的数据对象,这将返回一个屏幕名称数组(删除所有重复项。如果要保留重复项,请将
名称声明为数组,然后按入该数组。)我使用了相对详细的编码样式,以便更容易地查看发生了什么

var obj = {
    "data": {
        "statuses": [{
            "urls": [],
            "user_mentions": [{
                "indices": [3,16],
                "id_str": "626444770",
                "id": 626444770,
                "name": "katheryn",
                "screen_name": "sella_sandra"
            }, {
                "indices": ["***","***"],
                "id_str": "21447363",
                "id": 21447363,
                "name": "KATY PERRY",
                "screen_name": "katyperry"
            }, {
                "indices": ["***","***"],
                "id_str": "21447363",
                "id": 21447363,
                "name": "KATY PERRY",
                "screen_name": "floyd"
            }]
        }]
    }
};

var names = {};
for (var i=0; i<obj.data.statuses.length; i++) {
  if (obj.data.statuses[i]["user_mentions"]) {
    var mentions = obj.data.statuses[i]["user_mentions"];
    for (var j=0; j<mentions.length;j++) {
      if (mentions[j]["screen_name"]) {
        names[mentions[j]["screen_name"]] = 1;
      }
    }
  }
}

var arrayOfScreenNames = Object.keys(names);
console.log(arrayOfScreenNames);
var obj={
“数据”:{
“状态”:[{
“URL”:[],
“用户_提到”:[{
“指数”:[3,16],
“身份证号码”:“626444770”,
“id”:626444770,
“姓名”:“凯瑟琳”,
“屏幕名称”:“sella_sandra”
}, {
“索引”:[“****”,“****”],
“id_str”:“21447363”,
“id”:21447363,
“姓名”:“凯蒂·佩里”,
“屏幕名称”:“katyperry”
}, {
“索引”:[“****”,“****”],
“id_str”:“21447363”,
“id”:21447363,
“姓名”:“凯蒂·佩里”,
“屏幕名称”:“弗洛伊德”
}]
}]
}
};
变量名称={};

对于(var i=0;i给定更新的数据对象,这将返回一个屏幕名称数组(删除所有重复项。如果要保留重复项,请将
name
声明为一个数组并推送到它)。我使用了相对详细的编码样式,以便更容易地查看发生了什么

var obj = {
    "data": {
        "statuses": [{
            "urls": [],
            "user_mentions": [{
                "indices": [3,16],
                "id_str": "626444770",
                "id": 626444770,
                "name": "katheryn",
                "screen_name": "sella_sandra"
            }, {
                "indices": ["***","***"],
                "id_str": "21447363",
                "id": 21447363,
                "name": "KATY PERRY",
                "screen_name": "katyperry"
            }, {
                "indices": ["***","***"],
                "id_str": "21447363",
                "id": 21447363,
                "name": "KATY PERRY",
                "screen_name": "floyd"
            }]
        }]
    }
};

var names = {};
for (var i=0; i<obj.data.statuses.length; i++) {
  if (obj.data.statuses[i]["user_mentions"]) {
    var mentions = obj.data.statuses[i]["user_mentions"];
    for (var j=0; j<mentions.length;j++) {
      if (mentions[j]["screen_name"]) {
        names[mentions[j]["screen_name"]] = 1;
      }
    }
  }
}

var arrayOfScreenNames = Object.keys(names);
console.log(arrayOfScreenNames);
var obj={
“数据”:{
“状态”:[{
“URL”:[],
“用户_提到”:[{
“指数”:[3,16],
“身份证号码”:“626444770”,
“id”:626444770,
“姓名”:“凯瑟琳”,
“屏幕名称”:“sella_sandra”
}, {
“索引”:[“****”,“****”],
“id_str”:“21447363”,
“id”:21447363,
“姓名”:“凯蒂·佩里”,
“屏幕名称”:“katyperry”
}, {
“索引”:[“****”,“****”],
“id_str”:“21447363”,
“id”:21447363,
“姓名”:“凯蒂·佩里”,
“屏幕名称”:“弗洛伊德”
}]
}]
}
};
变量名称={};

对于(var i=0;它不是有效的JSON。感谢您的帮助,编辑@MikeC
statuses
仍然毫无意义。
“statuses”:[{“entities”:{…},“entities”:{…},“entities”:{…},entities”:{…}]
它可能的副本确实不聪明。错误出现在“statuses.length”中。感谢所有人的帮助这不是有效的JSON。感谢您的帮助并编辑@MikeC
statuses
仍然没有意义。
“statuses”:[{“entities”:{…},“entities”:{…},“entities”:{…},“entities”:{…}]
它的可能副本确实不聪明。错误出现在“statuses.length”中。感谢大家的帮助,这不是有效的语法。数组“statuses”有很多键,而不仅仅是“entities”。我这样写是为了说明我需要什么,但数组可以包含更多的键。@frostrock数组不能有键,数组只能有项。请在控制台上运行数组来检查数组,并进行更正。@gurvinder372您不能像以前那样启动对象。在控制台中运行代码,您将看到语法错误。此外,您还可以验证JSON很容易。我如何请求用户提到[0]?因为当我使用console.log(statuses.user\u提到[0])时,我得到响应:无法读取未定义的无效语法的属性“0”。数组“statuses”有很多键,而不仅仅是“entities”。我这样写是为了说明我需要什么,但数组可以包含更多的键。@frostrock数组不能有键,数组只能有项。请在控制台上运行数组来检查数组,并进行更正。@gurvinder372您不能像以前那样启动对象。在控制台中运行代码,您将看到语法错误。此外,您还可以验证JSON很容易。我如何请求用户_提到[0]?因为当我使用console.log时(