此 URL返回 JSON:

{
  query: {
    count: 1,
    created: "2015-12-09T17:12:09Z",
    lang: "en-US",
    diagnostics: {},
    ...
  }
}

我试过这个,但没有用:

responseObj = readJsonFromUrl('http://query.yahooapis.com/v1/publ...');
var count = responseObj.query.count;

console.log(count) // should be 1

如何从此 URL 的 JSON 响应中获取 JavaScript 对象?

#1楼 票数:201 已采纳

您可以使用 jQuery .getJSON()函数:

$.getJSON('http://query.yahooapis.com/v1/public/yql?q=select%20%2a%20from%20yahoo.finance.quotes%20WHERE%20symbol%3D%27WRC%27&format=json&diagnostics=true&env=store://datatables.org/alltableswithkeys&callback', function(data) {
    // JSON result in `data` variable
});

如果你不想使用 jQuery,你应该看看这个纯 JS 解决方案的答案: https : //stackoverflow.com/a/2499647/1361042

#2楼 票数:168

如果你想用普通的 javascript 来做,你可以定义一个这样的函数:

var getJSON = function(url, callback) {
    var xhr = new XMLHttpRequest();
    xhr.open('GET', url, true);
    xhr.responseType = 'json';
    xhr.onload = function() {
      var status = xhr.status;
      if (status === 200) {
        callback(null, xhr.response);
      } else {
        callback(status, xhr.response);
      }
    };
    xhr.send();
};

并像这样使用它:

getJSON('http://query.yahooapis.com/v1/public/yql?q=select%20%2a%20from%20yahoo.finance.quotes%20WHERE%20symbol%3D%27WRC%27&format=json&diagnostics=true&env=store://datatables.org/alltableswithkeys&callback',
function(err, data) {
  if (err !== null) {
    alert('Something went wrong: ' + err);
  } else {
    alert('Your query count: ' + data.query.count);
  }
});

请注意, data是一个对象,因此您可以访问其属性而无需解析它。

#3楼 票数:108

借助 Chrome、Firefox、Safari、Edge 和 Webview,您可以在本机使用 fetch API,这使这变得更容易,也更简洁。

如果您需要支持 IE 或更旧的浏览器,您还可以使用fetch polyfill

let url = 'https://example.com';

fetch(url)
.then(res => res.json())
.then(out =>
  console.log('Checkout this JSON! ', out))
.catch(err => throw err);

MDN:获取 API

即使 Node.js 没有内置此方法,您也可以使用node-fetch来实现完全相同的实现。

#4楼 票数:24

ES8(2017) 尝试

obj = await (await fetch(url)).json();

 async function load() { let url = 'https://my-json-server.typicode.com/typicode/demo/db'; let obj = await (await fetch(url)).json(); console.log(obj); } load();

你可以通过 try-catch 处理错误

 async function load() { let url = 'http://query.yahooapis.com/v1/publ...'; let obj = null; try { obj = await (await fetch(url)).json(); } catch(e) { console.log('error'); } console.log(obj); } load();

#5楼 票数:8

Axios用于浏览器和 node.js 的基于Promise的 HTTP 客户端

它为 JSON 数据提供自动转换,这是Vue.js 团队在从默认包含 REST 客户端的 1.0 版本迁移时的官方建议

执行GET请求

// Make a request for a user with a given ID axios.get('http://query.yahooapis.com/v1/publ...') .then(function (response) { console.log(response); }) .catch(function (error) { console.log(error); });

或者甚至只是axios(url)就足够了,因为GET请求是默认的。

#6楼 票数:7

定义一个函数,如:

fetchRestaurants(callback) {
    fetch(`http://www.restaurants.com`)
       .then(response => response.json())
       .then(json => callback(null, json.restaurants))
       .catch(error => callback(error, null))
}

然后像这样使用它:

fetchRestaurants((error, restaurants) => {
    if (error) 
        console.log(error)
    else 
        console.log(restaurants[0])

});

#7楼 票数:1

 async function fetchDataAsync(url) { const response = await fetch(url); console.log(await response.json()); } fetchDataAsync('paste URL');

#8楼 票数:0

今天早上,我也有同样的疑问,现在它清除了我刚刚使用 JSON 和“open-weather-map”( https://openweathermap.org/)api并从 index.html 文件中的 URL 获取数据,代码如下所示:-

 //got location var x = document.getElementById("demo"); if (navigator.geolocation) { navigator.geolocation.getCurrentPosition(weatherdata); } else { x.innerHTML = "Geolocation is not supported by this browser."; } //fetch openweather map url with api key function weatherdata(position) { //put corrdinates to get weather data of that location fetch('https://api.openweathermap.org/data/2.5/weather?lat='+position.coords.latitude+'&lon='+position.coords.longitude+'&appid=b2c336bb5abf01acc0bbb8947211fbc6') .then(response => response.json()) .then(data => { console.log(data); document.getElementById("demo").innerHTML = '<br>wind speed:-'+data.wind.speed + '<br>humidity :-'+data.main.humidity + '<br>temprature :-'+data.main.temp }); }
 <div id="demo"></div>

我公开提供了 api 密钥,因为我有免费订阅,一开始就免费订阅。 您可以在“rapidapi.com”上找到一些不错的免费 API 和密钥

#9楼 票数:0

正如此页面中的@DanAlboteanu 回答以及该 javascript 的一些错误修正,我建议的代码是:

fetchRestaurants((error, data) => {
    if (error)
        console.log(error); 
    else
        console.log(data)

});

和 fetchRestaurants 方法是(请将您的 json url 替换为 {your url of json data}):

function fetchRestaurants(callback) {
    fetch("{your url of json data}")
       .then(response => response.json())
       .then(json => callback(null, json))
       .catch(error => callback(error, null))
}

#10楼 票数:-1

//Resolved
const fetchPromise1 = fetch(url);
    fetchPromise1.then(response => {
      console.log(response);
    });


//Pending
const fetchPromise = fetch(url);
console.log(fetchPromise);

#11楼 票数:-2

您可以在 JavaScript 中使用 fetch() 访问 JSON 数据

使用您的 url 更新 fetch() 的 url 参数。

fetch(url)
    .then(function(response){
        return response.json();
    })
    .then(function(data){
        console.log(data);
    })

希望它有帮助,它对我来说非常有效。

  ask by Yiğit Doğuş Özçelik translate from so

未解决问题?本站智能推荐:

2回复

在javascript中从URL获取JSON数据?

我正在尝试从http://www.xyz.com/abc.json格式的URL中检索数据。 我一直在尝试使用$ .ajax方法以下列方式实现此目的。 但是我无法让它运行。 我需要遍历检索到的数据并检查一些特定条件。 如果json数据有一个名称,可以使用$ .getJSon轻松实现这
3回复

无法使用 JavaScript 从 URL 中获取 JSON

我最近开始学习 JavaScript,我的学习过程很顺利,直到我开始学习 JSON,当我开始尝试从 URL 中获取 JSON 时,我陷入了非常糟糕的困境,我尝试了很多我在这里找到的方法,和大量不同的 URL,似乎没有任何效果。 切入正题,这就是我所拥有的: 我正在使用 IIS 创建本地服务器,
2回复

从URL解析JSON,然后在JavaScript中获取值

因此,以前的有关从URL解析JSON的问题已解决,并且工作正常。 现在,我正在尝试从其他URL获取JSON,但它似乎不再起作用。 我尝试了使上一个URL工作的方式,但不适用于该URL。 这是我的代码: 的HTML 的JavaScript http://codepe
1回复

如何从javascript中的URL获取json数据?

我有json数据的网址。 例如: {"type" : "feature", "name": name"...} URL是GeoServer URL。 我想获取JSON数据。 我该怎么办? 但这不起作用。 我没有json数据。
1回复

从Javascript中的URL获取JSON数据

我正在尝试从Web服务器读取JSON数据,但丢失了。 我没有收到任何错误,但我的代码也未显示任何内容。 这是样本 如果您注意到我尝试了3个$ .getJSON语句使用不同的URL,则2种有效,但是在URL中带有键的语句在成功时不会显示任何警报。 “”示例网址“ http://a
1回复

如何使用JavaScript从URL中获取JSON数据? (JSON的新功能)

我是开发人员角色的新手,请帮忙。 首先,它一直让我拒绝访问URL错误! 然后我了解了jsonp并添加了它。 现在,当我应该获取json数据时,我什么也没看到。 !URL中的JSON数据正确,并在JSONLINT中运行了它!
1回复

从URL解析JSON并在JavaScript中获取值

解决了之前的问题后,我遇到了另一个问题。 我试图从URL加载JSON,然后获取所需的值。 问题是,我的代码似乎不起作用。 我所得到的只是一个空白页。
3回复

从url获取json数据,并通过JavaScript将其放入变量中

我在URL中有一个JSON数据,我想通过JavaScript(没有jQuery)从URL中获取所有JSON数据,并将其放入变量tags 。 JSON数据: 还有我的JavaScript代码,此代码不起作用: async function get() { let ur