2017-12-26 28 views
0

私はここでいくつか他の同様の質問を見たことがあるが、誰も私のために一見うまくいく方法ではない。NodeJS未定義のJSONオブジェクト

私はNodeJSを初めて使い、APIからデータを要求して遊んでいます。ここでのテストでは、ユーザーからのプロンプトの入力に基づいてティッカー価格を引き出そうとしています。

しかしこれはオブジェクト

は、これは私がこの仕事をしようとして作るために使っていたコードで、正常に動作します:

prompt.start(); 
prompt.get(['coin'], function (err, result) { 

    request({url: `https://min-api.cryptocompare.com/data/price?fsym=${result.coin}&tsyms=BTC,USD`, json:true}, function(err, res, json) { 
    if (err) { 
     throw err; 
    } 
    console.log(json); 
    var json = JSON.stringify(json); 
    var string2 = JSON.parse(json); 
    console.log(string2.btc_price); 
    console.log(json); 
    }); 
    console.log('Retrieving: ' + result.coin); 
}); 

APIリクエストの作品は、しかし、それはして次のようになりますJSONを返します私の3つのコンソールログ:

{ set_attributes: { btc_price: 1, usd_price: 15839.35 } } 
    undefined 
    {"set_attributes":{"btc_price":1,"usd_price":15839.35}} -- (Stringify'd response) 

私は変数としてbtc_price & usd_priceを抽出することができるようにしたいが、IVEは」いくつかの異なる方法を試してみましたが、することができます正確にどこに間違っているのか理解していない。どんな助けでも大歓迎です!

乾杯、

+4

を待ちます。 json.btc_priceは存在しません.json.set_attributes.btc_priceは –

+0

です。[アクセス/プロセス(ネストされた)オブジェクト、配列、またはJSON]の重複の可能性があります(https://stackoverflow.com/questions/11922383/access-process-nested-オブジェクト - 配列 - または - json) – JJJ

答えて

2

あなたがbtc_price属性を抽出しようと

Jは、実際ので、あなたの第2コンソールは上console.log(string2.set_attributes.btc_price);

+0

私は見落として、これを固定し、今は完全に動作するような基本的なこと。そのアダムに感謝します!メリークリスマス – jayf93

0

はGitHubの上でより多くの星を持っているaxios、より多くのフォロワーをお読みください入れ子になっていますギターとフォーク。

Features

  • ブラウザ
  • からのXMLHttpRequestsは
  • のNode.jsからのHTTP要求を作成してください
  • インターセプト要求と応答
  • は、要求と応答データに
  • を変換約束のAPIをサポート
  • リクエストをキャンセルする
  • 自動JSONデータに変換btc_price内部set_attributesあるため、非同期/を使用XSRF

から保護するため

  • クライアント側のサポートは

    // Make a request for a user with a given ID 
        var preload = null; 
        async function getPrice(symbol) { 
         preload = await axios.get('https://min-api.cryptocompare.com/data/price?fsym=${symbol}&tsyms=BTC,USD') 
        .then(function (response) { 
         preload = response.data; 
        }) 
        .catch(function (error) { 
         console.log(error); 
        }); 
        return `preload.BTC = ${preload.BTC}; preload.BTC = ${preload.BTC}`; 
        }; 
        getPrice('ETH'); 
        // return preload.BTC = 0.04689; preload.USD = 742.85 
    
  • 関連する問題