使用Javascript过滤Json
您好,您能帮我过滤一下这样的Json对象吗:使用Javascript过滤Json,javascript,arrays,json,filter,Javascript,Arrays,Json,Filter,您好,您能帮我过滤一下这样的Json对象吗: { "data": { "statuses": [{ "entities": { "urls": [], "user_mentions": [{ "screen_name": "name1" }] }, "entities
{
"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。感谢您的帮助,编辑@MikeCstatuses
仍然毫无意义。“statuses”:[{“entities”:{…},“entities”:{…},“entities”:{…},entities”:{…}]
它可能的副本确实不聪明。错误出现在“statuses.length”中。感谢所有人的帮助这不是有效的JSON。感谢您的帮助并编辑@MikeCstatuses
仍然没有意义。“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时(