-2
votes

Problème de conversion de données JavaScript

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();


4 commentaires

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 ...


3 Réponses :


1
votes

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);


4 commentaires

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



0
votes

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);


2 commentaires

Comment définir des données dynamiques


Sur un événement. Ne ressemble pas à être coupé pour ce travail.



0
votes

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);


3 commentaires

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