用js获取jsons值

时间:2017-12-01 14:22:18

标签: javascript json

我想获取this json的" appid" 但问题是对象标题在此期间发生了变化,所以我需要一个js代码通过成为列表中的第一个(第二个,第三个)对象来选择" appid" 。我尝试了这个,但它不起作用:(

var sections = (call the json)

var index = [];

//setting the index array
for (var x in sections) {
    index.push(x);
}

var imgid001 = (sections[index[1]].appid);

7 个答案:

答案 0 :(得分:0)

我不明白你在找什么? 但也许这会有所帮助:

var sections = (al the json code in local)    
var index = [];    
//setting the index array
for (var x = 0 ; x < sections.lenght; x ++){
    index.push(x)
}    
var imgid001 = (sections[index[90]].appid);

答案 1 :(得分:0)

使用Object.values()访问与密钥对应的值,然后使用array#map获取appid值。

var json = {"578080":{"appid":578080,"name":"PLAYERUNKNOWN'S BATTLEGROUNDS","developer":"PUBG Corporation","publisher":"PUBG Corporation","score_rank":17,"positive":277104,"negative":173247,"userscore":60,"owners":22512885,"owners_variance":142499,"players_forever":22385548,"players_forever_variance":142115,"players_2weeks":16894492,"players_2weeks_variance":124193,"average_forever":8570,"average_2weeks":1771,"median_forever":5509,"median_2weeks":1266,"price":"2999"},"730":{"appid":730,"name":"Counter-Strike: Global Offensive","developer":"Valve","publisher":"Valve","score_rank":74,"positive":2094164,"negative":228950,"userscore":89,"owners":37137816,"owners_variance":180096,"players_forever":35672331,"players_forever_variance":176797,"players_2weeks":9605392,"players_2weeks_variance":94373,"average_forever":17518,"average_2weeks":714,"median_forever":4280,"median_2weeks":282,"price":"1499"},"570":{"appid":570,"name":"Dota 2","developer":"Valve","publisher":"Valve","score_rank":64,"positive":742208,"negative":101331,"userscore":87,"owners":117932840,"owners_variance":290445,"players_forever":117932840,"players_forever_variance":290445,"players_2weeks":9220909,"players_2weeks_variance":92502,"average_forever":11673,"average_2weeks":1144,"median_forever":258,"median_2weeks":640,"price":"0"}};

var result = Object.values(json).map(function(obj){ 
      return obj.appid;
    });
console.log(result);

答案 2 :(得分:0)

根据我的理解,你面临的问题是元素的排序......你想要排名第一的游戏是否在索引1?

将对象解析为JSON时,属性的顺序绝对没有意义。您不能依赖任何JSON工具来确保您以正确的顺序获得它们。理论上,只是创建一个对象并通过for..in循环传递它可能会不时给出不同的结果。

虽然它没有订单,但它仍然包含一种方法来计算score_rank

var sections = (call the json)

var index = [];

//setting the index array
for (var x in sections) {
    index[sections[x].score_rank] = x;
}

var imgid001 = (sections[index[1]].appid);

使用score_rank作为index地图中的索引,可以满足您的需求。

答案 3 :(得分:0)

这里有一个对象,而不是列表/数组,因此订单无法保证!没有办法按照这种格式做你正在计划的事情。

如果需要订购,则需要将json作为数组。

&#13;
&#13;
var sections = {"578080":{"appid":578080,"name":"PLAYERUNKNOWN'S BATTLEGROUNDS","developer":"PUBG Corporation","publisher":"PUBG Corporation","score_rank":17,"positive":277104,"negative":173247,"userscore":60,"owners":22512885,"owners_variance":142499,"players_forever":22385548,"players_forever_variance":142115,"players_2weeks":16894492,"players_2weeks_variance":124193,"average_forever":8570,"average_2weeks":1771,"median_forever":5509,"median_2weeks":1266,"price":"2999"},
		"730":{"appid":730,"name":"Counter-Strike: Global Offensive","developer":"Valve","publisher":"Valve","score_rank":74,"positive":2094164,"negative":228950,"userscore":89,"owners":37137816,"owners_variance":180096,"players_forever":35672331,"players_forever_variance":176797,"players_2weeks":9605392,"players_2weeks_variance":94373,"average_forever":17518,"average_2weeks":714,"median_forever":4280,"median_2weeks":282,"price":"1499"},
		"570":{"appid":570,"name":"Dota 2","developer":"Valve","publisher":"Valve","score_rank":64,"positive":742208,"negative":101331,"userscore":87,"owners":117932840,"owners_variance":290445,"players_forever":117932840,"players_forever_variance":290445,"players_2weeks":9220909,"players_2weeks_variance":92502,"average_forever":11673,"average_2weeks":1144,"median_forever":258,"median_2weeks":640,"price":"0"},
		"440":{"appid":440,"name":"Team Fortress 2","developer":"Valve","publisher":"Valve","score_rank":85,"positive":456688,"negative":29364,"userscore":93,"owners":43830288,"owners_variance":194180,"players_forever":43830288,"players_forever_variance":194180,"players_2weeks":1690982,"players_2weeks_variance":39926,"average_forever":4490,"average_2weeks":655,"median_forever":226,"median_2weeks":381,"price":"0"},
		"271590":{"appid":271590,"name":"Grand Theft Auto V","developer":"Rockstar North","publisher":"Rockstar Games","score_rank":24,"positive":234736,"negative":112774,"userscore":67,"owners":8775849,"owners_variance":90285,"players_forever":8583731,"players_forever_variance":89309,"players_2weeks":1667493,"players_2weeks_variance":39648,"average_forever":7619,"average_2weeks":491,"median_forever":4032,"median_2weeks":160,"price":"5999"}};


var sectionsArray= [{"appid":578080,"name":"PLAYERUNKNOWN'S BATTLEGROUNDS","developer":"PUBG Corporation","publisher":"PUBG Corporation","score_rank":17,"positive":277104,"negative":173247,"userscore":60,"owners":22512885,"owners_variance":142499,"players_forever":22385548,"players_forever_variance":142115,"players_2weeks":16894492,"players_2weeks_variance":124193,"average_forever":8570,"average_2weeks":1771,"median_forever":5509,"median_2weeks":1266,"price":"2999"},
		{"appid":730,"name":"Counter-Strike: Global Offensive","developer":"Valve","publisher":"Valve","score_rank":74,"positive":2094164,"negative":228950,"userscore":89,"owners":37137816,"owners_variance":180096,"players_forever":35672331,"players_forever_variance":176797,"players_2weeks":9605392,"players_2weeks_variance":94373,"average_forever":17518,"average_2weeks":714,"median_forever":4280,"median_2weeks":282,"price":"1499"},
		{"appid":570,"name":"Dota 2","developer":"Valve","publisher":"Valve","score_rank":64,"positive":742208,"negative":101331,"userscore":87,"owners":117932840,"owners_variance":290445,"players_forever":117932840,"players_forever_variance":290445,"players_2weeks":9220909,"players_2weeks_variance":92502,"average_forever":11673,"average_2weeks":1144,"median_forever":258,"median_2weeks":640,"price":"0"},
		{"appid":440,"name":"Team Fortress 2","developer":"Valve","publisher":"Valve","score_rank":85,"positive":456688,"negative":29364,"userscore":93,"owners":43830288,"owners_variance":194180,"players_forever":43830288,"players_forever_variance":194180,"players_2weeks":1690982,"players_2weeks_variance":39926,"average_forever":4490,"average_2weeks":655,"median_forever":226,"median_2weeks":381,"price":"0"},
		{"appid":271590,"name":"Grand Theft Auto V","developer":"Rockstar North","publisher":"Rockstar Games","score_rank":24,"positive":234736,"negative":112774,"userscore":67,"owners":8775849,"owners_variance":90285,"players_forever":8583731,"players_forever_variance":89309,"players_2weeks":1667493,"players_2weeks_variance":39648,"average_forever":7619,"average_2weeks":491,"median_forever":4032,"median_2weeks":160,"price":"5999"}];
    
    


for (var x in sections) {
    console.info("this will not be the first elements appid in json:", x);
    break;
}

console.info("Object keys/order", Object.keys(sections));

console.info("first element in array", sectionsArray[0].appid);
&#13;
&#13;
&#13;

答案 4 :(得分:0)

尝试这样的事情:

&#13;
&#13;
	var data = {"100":{appid:1, name:'1'}, "200":{appid:2, name:'2'}, "300":{appid:3, name:'3'}};

	var appIds = [];
	for (var property in data){
	  appIds.push(data[property].appid);
	}

	console.log(appIds);
&#13;
&#13;
&#13;

根据您的数据,您的属性名称是具有对象值的数字。因此,我们只需要迭代到所有属性并使用obj [propertyname]语法访问值的appid属性。

希望我明白你的需要。

答案 5 :(得分:0)

由于您正在迭代到对象的属性,因此属性的顺序不是那么可预测的(在这种情况下,它似乎遵循主属性字符串的数值),因此您不能依赖它。

但是,如果它对您的目标有用,您可以按您选择的属性对结果进行排序。 在这种情况下,我按&#34; score_rank&#34;对结果进行排序。财产:

&#13;
&#13;
var sections = {
    "2":{"appid":"appidN1-scorerank5","name":"PLAYERUNKNOWN'S BATTLEGROUNDS","developer":"PUBG Corporation","publisher":"PUBG Corporation","score_rank":5,"positive":277104,"negative":173247,"userscore":60,"owners":22512885,"owners_variance":142499,"players_forever":22385548,"players_forever_variance":142115,"players_2weeks":16894492,"players_2weeks_variance":124193,"average_forever":8570,"average_2weeks":1771,"median_forever":5509,"median_2weeks":1266,"price":"2999"},
    "3":{"appid":"appidN2-scorerank2","name":"Counter-Strike: Global Offensive","developer":"Valve","publisher":"Valve","score_rank":2,"positive":2094164,"negative":228950,"userscore":89,"owners":37137816,"owners_variance":180096,"players_forever":35672331,"players_forever_variance":176797,"players_2weeks":9605392,"players_2weeks_variance":94373,"average_forever":17518,"average_2weeks":714,"median_forever":4280,"median_2weeks":282,"price":"1499"},
    "4":{"appid":"appidN3-scorerank3","name":"Dota 2","developer":"Valve","publisher":"Valve","score_rank":3,"positive":742208,"negative":101331,"userscore":87,"owners":117932840,"owners_variance":290445,"players_forever":117932840,"players_forever_variance":290445,"players_2weeks":9220909,"players_2weeks_variance":92502,"average_forever":11673,"average_2weeks":1144,"median_forever":258,"median_2weeks":640,"price":"0"},
    "1":{"appid":"appidN4-scorerank4","name":"PLAYERUNKNOWN'S BATTLEGROUNDS","developer":"PUBG Corporation","publisher":"PUBG Corporation","score_rank":4,"positive":277104,"negative":173247,"userscore":60,"owners":22512885,"owners_variance":142499,"players_forever":22385548,"players_forever_variance":142115,"players_2weeks":16894492,"players_2weeks_variance":124193,"average_forever":8570,"average_2weeks":1771,"median_forever":5509,"median_2weeks":1266,"price":"2999"},
    "6":{"appid":"appidN5-scorerank1","name":"Counter-Strike: Global Offensive","developer":"Valve","publisher":"Valve","score_rank":1,"positive":2094164,"negative":228950,"userscore":89,"owners":37137816,"owners_variance":180096,"players_forever":35672331,"players_forever_variance":176797,"players_2weeks":9605392,"players_2weeks_variance":94373,"average_forever":17518,"average_2weeks":714,"median_forever":4280,"median_2weeks":282,"price":"1499"},
    "5":{"appid":"appidN6-scorerank0","name":"Dota 2","developer":"Valve","publisher":"Valve","score_rank":0,"positive":742208,"negative":101331,"userscore":87,"owners":117932840,"owners_variance":290445,"players_forever":117932840,"players_forever_variance":290445,"players_2weeks":9220909,"players_2weeks_variance":92502,"average_forever":11673,"average_2weeks":1144,"median_forever":258,"median_2weeks":640,"price":"0"}
    
    }
    
    var result = Object.values(sections)
    .sort(function(a, b) {
      return a.score_rank - b.score_rank;
    })
    .map(function(obj){ 
          
          return obj.appid;
        });
    
    console.log(result);
&#13;
&#13;
&#13;

答案 6 :(得分:-2)

var sections = {a:9, b:8, c:7};

var index = [];

//setting the index array
for (var i in sections) { // sections['a','b','c']
    index.push(i);
}

alert(index[1]) // 'b'
alert(sections[index[1]]); // 8

// var sections = {a:9, b:{appid:5}, c:7};
// alert(sections[index[1]]); // firefox: {} or nothing (maybe)
// alert(sections[index[1]].toSource()); // firefox: {appid:5}
// alert(sections[index[1]].appid); // 5