Cette URL renvoie JSON:
{
query: {
count: 1,
created: "2015-12-09T17:12:09Z",
lang: "en-US",
diagnostics: {},
...
}
}
J'ai essayé ça et ça n'a pas marché:
responseObj = readJsonFromUrl('http://query.yahooapis.com/v1/publ...');
var count = responseObj.query.count;
console.log(count) // should be 1
Comment obtenir un objet JavaScript à partir de la réponse JSON de cette URL?
Vous pouvez utiliser jQuery .getJSON()
function:
$.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) {
//data is the JSON string
});
Si vous ne souhaitez pas utiliser jQuery, vous devez rechercher cette réponse pour la solution JS pure: https://stackoverflow.com/a/2499647/1361042
Si vous voulez le faire en javascript simple, vous pouvez définir une fonction comme celle-ci:
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();
};
Et utilisez-le comme ceci:
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);
}
});
Notez que data
est un objet, vous pouvez donc accéder à ses attributs sans avoir à l'analyser.
Avec Chrome, Firefox, Safari, Edge et Webview, vous pouvez utiliser l’API de récupération de manière native, ce qui simplifie beaucoup la tâche et la rend beaucoup plus concise.
Si vous avez besoin de support pour IE ou les navigateurs plus anciens, vous pouvez également utiliser le 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 });
Même si Node.js n'a pas cette méthode intégrée, vous pouvez utiliser node-fetch qui permet la même implémentation.
Axios est un client HTTP basé sur une promesse pour le navigateur et node.js .
Il offre des transformations automatiques pour les données JSON et il est recommandation officielle de l'équipe de Vue.js lors de la migration depuis la version 1.0, qui incluait un client REST par défaut.
Exécution d'une requête
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); });
Ou même simplement axios(url)
suffit car une demande GET
est la valeur par défaut.
Une fonction:
fetchRestaurants(callback) {
fetch(`http://www.restaurants.com`)
.then(response => response.json())
.then(json => callback(null, json.restaurants))
.catch(error => callback(error, null))
}
usage:
fetchRestaurants((error, restaurants) => {
if (error)
console.log(error)
else
console.log(restaurants[0])
});
essayer
obj = await (await fetch(url)).json();
async function get() {
let url = 'https://my-json-server.typicode.com/typicode/demo/db'
let obj = await (await fetch(url)).json();
console.log(obj);
}
<button onclick="get()">Load data</button>
Vous pouvez accéder aux données JSON en utilisant fetch () en JavaScript
Mettez à jour le paramètre url de fetch () avec votre url.
fetch(url)
.then(function(response){
return response.json();
})
.then(function(data){
console.log(data);
})
J'espère que ça aide, cela a fonctionné parfaitement pour moi.
//Resolved
const fetchPromise1 = fetch(url);
fetchPromise1.then(response => {
console.log(response);
});
//Pending
const fetchPromise = fetch(url);
console.log(fetchPromise);
async function fetchDataAsync() {
const response = await fetch('https://api.github.com/users/zq-jhon');
console.log(await response.json())
}
fetchDataAsync();