Dans JavaScript Vous voulez des données selon mes besoins, mais je ne sais pas comment convertir des données .Je reçoive des données de Fitbit et de la réponse de l'API Web Donnez des données JSON et je souhaite modifier ces données à l'aide de JavaScript. Ma réponse de l'API est spectacle ci-dessous ..
let date = new Date(); let todayDate = `${date.getFullYear()}-${date.getMonth() + 1}-${date.getDate()}`; // let endDate =`${date.getFullYear()}-${date.getMonth() + 1}-${date.getDate() + 1}`; // console.log(endDate); var url = window.location.href; //getting the access token from url var access_token = url.split("#")[1].split("=")[1].split("&")[0]; // get the userid var userId = url.split("#")[1].split("=")[2].split("&")[0]; // console.log(access_token); var response = []; var key = "date"; var obj = {}; obj[key] = todayDate; response.push(obj); console.log(response); // Make an API request and graph it var processResponse = function (res) { if (!res.ok) { throw new Error('Fitbit API request failed: ' + res); } var contentType = res.headers.get('content-type') if (contentType && contentType.indexOf("application/json") !== -1) { return res.json(); } else { throw new Error('JSON expected but received ' + contentType); } } var xhr = new XMLHttpRequest(); xhr.open('GET', 'https://api.fitbit.com/1/user/' + userId + '/activities/steps/date/today/1d.json'); xhr.setRequestHeader("Authorization", 'Bearer ' + access_token); xhr.onload = function () { if (xhr.status === 200) { var d1 = xhr.responseText; var jsonResponse = JSON.parse(d1); var steps = jsonResponse["activities-steps"][0].value; console.log("steps:", steps); var key = "steps"; var obj = {}; obj[key] = steps; response.push(obj); } }; xhr.send(); var xhr2 = new XMLHttpRequest(); xhr2.open('GET', 'https://api.fitbit.com/1/user/' + userId + '/activities/distance/date/today/1d.json'); xhr2.setRequestHeader("Authorization", 'Bearer ' + access_token); xhr2.onload = function () { if (xhr2.status === 200) { var d2 = xhr2.responseText; var jsonResponse = JSON.parse(d2); var distance = jsonResponse["activities-distance"][0].value; var key = "distance"; var obj = {}; obj[key] = distance; response.push(obj); console.log("distance:", distance); } }; xhr2.send(); var xhr3 = new XMLHttpRequest(); xhr3.open('GET', 'https://api.fitbit.com/1/user/' + userId + '/activities/activityCalories/date/today/1d.json'); xhr3.setRequestHeader("Authorization", 'Bearer ' + access_token); xhr3.onload = function () { if (xhr3.status === 200) { var d3 = xhr3.responseText; var jsonResponse = JSON.parse(d3); var calories = jsonResponse["activities-activityCalories"][0].value; var key = "calories"; var obj = {}; obj[key] = calories; response.push(obj); console.log("calories:", calories); //document.write(xhr2.responseText); } }; xhr3.send(); var xhr4 = new XMLHttpRequest(); xhr4.open('GET', 'https://api.fitbit.com/1/user/' + userId + '/activities/minutesVeryActive/date/today/1d.json'); xhr4.setRequestHeader("Authorization", 'Bearer ' + access_token); xhr4.onload = function () { if (xhr4.status === 200) { var d4 = xhr4.responseText; var jsonResponse = JSON.parse(d4); var minutes = jsonResponse["activities-minutesVeryActive"][0].value; var key = "minutes"; var obj = {}; obj[key] = minutes; response.push(obj); console.log("minutes:", minutes); } }; xhr4.send();
3 Réponses :
Je le code pour vous;) Vous convertissez le plus la réponse à un nouvel objet de cette manière ci-dessous:
const res = { 0: {date: "2019-4-25"}, 1: {distance: "1.0627499999999999"}, 2: {minutes: "30"}, 3: {calories: "19"}, 4: {steps: "750"}, } const resconverted = { [res[0].date] : { 'distance':res[1].distance, 'minutes':res[2].minutes, 'calories':res[3].calories, 'steps':res[4].steps } } console.log(res); console.log(resconverted);
Que voulez-vous dire définir des données dynamiques? Vous obtenez une réponse et convertiez ensuite l'utiliser.
Ceci est des données statiques: -
Const res = {0: {Date: "2019-4-25"}, 1: {Distance: "1.06274999999999999"}, 2: {minutes: "30"}, 3: {calories: "19"}, 4: {étapes: "750"},}
et quelles sont les données dynamiques? poster un échantillon
Si ce premier segment de code que vous affichez est un tableau ou un objet, cela devrait fonctionner:
p>
var obj = { '0': {date: "2019-4-25"}, '1': {distance: "1.0627499999999999"}, '2': {minutes: "30"}, '3': {calories: "19"}, '4': {steps: "750"} }; var res = {}; res[obj[0].date] = { distance:obj[1].distance, steps:obj[4].steps, minutes:obj[2].minutes, calories:obj[3].calories }; console.log(res); var array = [ {date: "2019-4-25"}, {distance: "1.0627499999999999"}, {minutes: "30"}, {calories: "19"}, {steps: "750"} ]; var res2 = {}; res2[array[0].date] = { distance:array[1].distance, steps:array[4].steps, minutes:array[2].minutes, calories:array[3].calories } console.log(res2);
Comment définir des données dynamiques
Sur un événement. Ne ressemble pas à être coupé pour ce travail.
Utilisez cette réponse et convertir de manière dynamique la réponse:
const res = { 0: {date: "2019-4-25"}, 1: {distance: "1.0627499999999999"}, 2: {minutes: "30"}, 3: {calories: "19"}, 4: {steps: "750"}, } let k =[]; let v =[] Object.getOwnPropertyNames(res).map((key)=>{ p =Object.getOwnPropertyNames(res[key]).map((key1,index)=>{ k.push(key1); v.push(res[key][key1]); }) }) let o = {} ; for(i=0; i<k.length;i++) { o[k[i]] = v[i]; } console.log(o);
Dans la réponse var = []; Venant ceci 0: {Date: "2019-4-25"}, 1: {Distance: "1.06274999999999999"}, 2: {minutes: "30"}, 3: {calories: "19"}, 4: {étapes : "750"},
Qu'est-ce que tu dis? Je simule une réponse API par exemple
S'il vous plaît voir app.js
Est-ce que ce premier code segment de code un objet? Vous devez apprendre à utiliser des objets, si c'est le cas.
S'il vous plaît coder pour moi ...
Pourquoi faites-vous 4 XMLHTTPQUESTS dans le même fichier?
J'appelle quatre API Web de Fitbit ...