访问JSO

时间:2016-01-21 13:15:38

标签: alchemyapi

我正在尝试使用JSONP帖子通过JavaScript客户端应用程序测试Alchemy News API。

我的JSON结果如下所示:

<results>
<status>OK</status>
<usage>
By accessing AlchemyAPI or using information generated by AlchemyAPI
</usage>
<totalTransactions>50</totalTransactions>
<result>
   <docs>
      <element>
         <id>ODE0ODI3NTg3MHwxNDUzMzc2NDkz</id>
         <source>
            <enriched>
               <url>
                  <title>
                     Mich. Company Offers $15 Million To Acquire Firm
                  </title>
               </url>
          </enriched>
      </source>
      <timestamp>1453376493</timestamp>
</element>

我可以使用以下代码(取自How do I get the JSON from an API request into my page's javascript?

成功调用API
 function loadDoc() {
        $.ajax({
            url: 'https://gateway-a.watsonplatform.net/calls/data/GetNews?apikey=MY_KEY&outputMode=json&outputMode=json&start=now-7d&end=now&count=1&return=enriched,original',
            dataType: 'jsonp',
            jsonp: 'jsonp',
            type: "get",
                success: function (res) {
                if (res["status"] === "OK") {
                    alert("Good!");
                }
                else if (res["status"] === "ERROR") {
                    alert("Bad!");
                }
            },
            error: function (jqxhr) {
                //console.log(jqxhr);
            }
        });
}

我真正在努力的是访问返回对象中的数据 我可以毫无问题地读取顶级值,例如 status ,但我似乎可以从架构中更深层次的信息中加载任何值。

有人可以发帖告诉我如何访问标题字段中的数据吗?

非常感谢提前。

1 个答案:

答案 0 :(得分:0)

啊,我找到了解决方案(我没有意识到docs是一个数组)。以下是代码,以防对任何人有用。

function loadDoc() {
    $.ajax({
        url: 'https://gateway-a.watsonplatform.net/calls/data/GetNews?apikey=key&outputMode=json&outputMode=json&start=now-1d&end=now&count=2&q.enriched.url.enrichedTitle.relations.relation=|action.verb.text=acquire,object.entities.entity.type=Company|&return=enriched.url.title',
        dataType: 'jsonp',
        jsonp: 'jsonp',
        type: "get",
        data: { },
        success: function (data) {
            if (data["status"] === "OK") {

            var html = '';
            results = data.result.docs;

                for (var i = 0; i < results.length; i++) {

                    newsTitle = results[i].source.enriched.url.title;

                html = html + '<a href="#">' + newsTitle + '</a></br />';
                }

            $('#results').html(html);

            }
            else if (data["status"] === "ERROR") {
                alert("Bad!");
            }
        },
        error: function (error) {
            //console.log(error);
        }
    });

}