如何从json对象数组中获取字符串?

时间:2017-01-20 13:39:34

标签: javascript json

我的问题是来自google finance api提供的json中的任何字符串。我在调试时得到“未定义”。 。在下面的例子中,我对符号(t)和当前价格(l)感兴趣。

 $.getJSON("http://finance.google.com/finance/info?client=ig&q=TSLA&callback=?",
        function(json) {
        var Stocks = json;
        var text ="";   
        text = Stocks.l + " is the current stock price for: " + Stocks.t;
        document.getElementById('Textn').innerHTML = text; 

        });

2 个答案:

答案 0 :(得分:0)

响应是一个对象数组:

[
  {
    "id": "12607212",
    "t" : "TSLA",
    "e" : "NASDAQ"
    //etc

因此,要访问对象属性,首先需要钻入数组以获取所需的元素:

json[0].t //gets prop "t" of elem at index 0 of array, returns "TSLA"

答案 1 :(得分:0)

Stocks.l未定义,因为Stocks /你得到的回应是一个数组,而不是一个对象。

万一你收到一个包含多个对象的数组,我会使用一个循环 - 如果它是一个只有一个元素的数组,那么循环没有坏处。下面使用es6对象解构,因此请注意它目前在每个浏览器中都不起作用:

$.getJSON("https://finance.google.com/finance/info?client=ig&q=TSLA&callback=?", json => {
  for (let {l, t} of json) {
    let text = l + " is the current stock price for: " + t;
    document.getElementById('Textn').innerHTML += text;
  }
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script><div id="Textn">

</div>

es5变体会像

一样

$.getJSON("https://finance.google.com/finance/info?client=ig&q=TSLA&callback=?", function(json) {
  json.forEach(function(v) {
    var text = v.l + " is the current stock price for: " + v.t;
    document.getElementById('Textn').innerHTML += text;
  });
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div id="Textn">

</div>