2016-04-06 28 views
0

belirli verilerini edinin. Bazı düğümler üzerinde çalışıyorum ve bu sefer buhar api ve json nesneleriyle oynuyorum. Ama bazı problemlerim var.JSON nesnesinden (Steam Api)

Yani,

http://steamcommunity.com/profiles/<steamid>/inventory/json/730/2 

, Buhar api gelen bu koddan json,

var request = require('request'); 

var url = "http://steamcommunity.com/profiles/<steamid>/inventory/json/730/2" 

request({ 
    url: url, 
    json: true 
}, function (error, response, body) { 
    if (!error && response.statusCode === 200) { 
     var json = JSON.parse(body); 
     console.log(body) 
    } 
}); 

var Ve json istediğim json itibaren bu lite json-link

görünüyor her öğeden classid ve instanceid'i çıkarmak için, ama sorun geliyor. Nasıl bilmiyorum Onu ayrıştırmam gerektiğini biliyorum ama maalesef daha fazla bir şey yok.

Birisi nasıl öğrenebileceğimi anlamak için bir rehber/öğreticiyi nasıl açıklayabileceğini veya bağlayabileceğini çok yararlı olur.

Teşekkürler!

DÜZENLEME:

var request = require('request'); 
var _ = require('lodash'); 

var url = "http://steamcommunity.com/profiles/76561198007691048/inventory/json/730/2"; 


request({ 
    url: url, 
    json: true 
}, function jsonParse(error, response, data) { 
    console.log(data.rgDescriptions); 
    var item = getItems(data.rgDescriptions); 
    console.log(item); 

} 

); 

function getItems(data){ 
    var item = data; 
    if(!item){ 
     return "error"; 

    } 
    return _(item).keys().map(function(id){ 
     return _.pick([id], "name");}).value(); 

Console give me this; [ {}, {}, {}, {}, {}, {}, {}, {}, {},.... ]

JSON şuna benzer;

'1293508920_0': 
    { appid: '730', 
    classid: '1293508920', 
    instanceid: '0', 
    icon_url: '-9a81dlWLwJ2UUGcVs_nsVtzdOEdtWwKGZZLQHTxDZ7I56KU0Zwwo4NUX4oFJZEHLbXU5A1PIYQNqhpOSV-fRPasw8rsUFJ5KBFZv668FF4u1qubIW4Su4mzxYHbzqGtZ-KGlz8EuJcg3rnE9NiijVe3_UY-Zzr2JJjVLFEEeiQRtg', 
    icon_drag_url: '', 
    name: 'Shadow Case', 
    market_hash_name: 'Shadow Case', 
    market_name: 'Shadow Case', 
    name_color: 'D2D2D2', 
    background_color: '', 
    type: 'Base Grade Container', 
    tradable: 1, 
    marketable: 1, 
    commodity: 1, 
    market_tradable_restriction: '7', 
     }, 
    '1644880589_236997301': 
    { appid: '730', 
    classid: '1644880589', 
    instanceid: '236997301', 
    icon_url: '-9a81dlWLwJ2UUGcVs_nsVtzdOEdtWwKGZZLQHTxDZ7I56KU0Zwwo4NUX4oFJZEHLbXU5A1PIYQNqhpOSV-fRPasw8rsUFJ4MAlVo6n3e1Y27OPafjBN09izq42ChfbzNvXTlGkD6p0lj7_FpNjx0VDj_UBoZ272cNfBdg48MAyB-VS3xum61Me_ot2XnqkB5QYc', 
    icon_drag_url: '', 
    name: 'MLG Columbus 2016 Mirage Souvenir Package', 
    market_hash_name: 'MLG Columbus 2016 Mirage Souvenir Package', 
    market_name: 'MLG Columbus 2016 Mirage Souvenir Package', 
    name_color: 'D2D2D2', 
    background_color: '', 
    type: 'Base Grade Container', 
    tradable: 1, 
    marketable: 1, 
    commodity: 0, 
    market_tradable_restriction: '7', 
     }, 
+0

'JSON.parse (body)' bir JavaScript Nesnesi döndürür (https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object). Özelliklerden herhangi birine erişmek için şuna bir bakın ve yardımcı olup olmadığına bakın: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Working_with_Objects – puelo

cevap

0

Karmaşık nesnelerle veya koleksiyonlarla çalışmak için lodash kütüphanesini kullanabilirsiniz. Bu senin dosyasına bu kodu ekledikten sonra, npm i -S:

{ 
    "success":true, 
    "rgInventory": { 
    "5719625206": {"id":"5719625206","classid":"1651313004","instanceid":"188530139","amount":"1","pos":1}, 
    "5719034454": {"id":"5719034454","classid":"1649582636","instanceid":"188530139","amount":"1","pos":2}, 
    "5718628709": {"id":"5718628709","classid":"1649582636","instanceid":"188530139","amount":"1","pos":3}, 
    ... 
    } 
} 

her şeyden önce projenizde lodash kütüphane kurmak gerekli öğelerin dizi ayıklamak için:

Yani, aşağıdaki biçimde json sahip

var _ = require('lodash'); 

function extractItems(data) { 
    var rgInventory = _.get(data, 'rgInventory'); 
    if (!rgInventory) { 
    return []; 
    } 
    return _(rgInventory) 
    .keys() 
    .map(function(id) { 
     return _.pick(rgInventory[id], ['classid', 'instanceid']); 
    }) 
    .value(); 
} 
+0

Yardım için Thansk ama maalesef Hala% 100'ü anlamıyorum, paylaştığınız kodu anlıyorum ama onunla ne yapacağımı, onu bir nesneye nasıl uygulayacağınızı ve sonra onu nasıl kullanacağımı anlamıyorum. Kodu nereye koymalı ve verileri nesnelere nasıl almalıyım? – DavidS

+0

Hmm, ihtiyacınız olan her şey sadece 'extractItems' işlevimi kodunuzdan çağırır. Aramayı json: 'var items = extractItems (json)' olarak adlandırdığınız satırın altına yerleştirin; – alexmac

+0

Sanırım bunu yapmak için çok az bilgim var. Başka bir şeyle devam edeceğim. Yardımlarınız için teşekür ederim ! – DavidS

İlgili konular