web-dev-qa-db-fra.com

Comment pousser un objet JSON dans un tableau à l'aide de javascript

J'essaie d'extraire les données JSON d'une url.Il est sous la forme d'objet, je dois pousser les données d'objet dans un tableau.

var my_json;
$.getJSON("https://api.thingspeak.com/channels/"+did+"/feeds.json?api_key="+apikey+"&results=300", function(json1) {
console.log(json1);
json1.feeds.forEach(function(feed,i){
    console.log("\n The details of " + i + "th Object are :  \nCreated_at: " + feed.created_at + "\nEntry_id:" + feed.entry_id + "\nField1:" + feed.field1 + "\nField2:" + feed.field2+"\nField3:" + feed.field3);      
    my_json = feed;
    console.log(my_json); //Object {created_at: "2017-03-14T01:00:32Z", entry_id: 33358, field1: "4", field2: "4", field3: "0"}
    var data = [];
    for(var i in my_json)
    data.Push(my_json [i]);
    console.log(data); //["2017-03-14T01:00:32Z", 33358, "4", "4", "0"]
}); 

J'ai essayé comme ci-dessus dans my_json var j'ai les données JSON sous la forme d'objet maintenant je dois stocker cet objet dans des données var comme un tableau dans le format ci-dessous

[{
        "created_at": "2017-03-14T01:00:32Z",
        "entry_id": 33358,
        "field1": "4",
        "field2": "4",
        "field3": "0"
 },
 {
        "created_at": "2017-03-14T22:54:43Z",
        "entry_id": 33398,
        "field1": "84",
        "field2": "32",
        "field3": "0"
 }];

Quelqu'un peut-il m'aider comment le faire? Merci

2
Anusha

Observation

  • S'il existe un seul objet et que vous souhaitez insérer un objet entier dans un tableau, vous n'avez pas besoin de répéter l'objet.

Essaye ça :

var feed = {created_at: "2017-03-14T01:00:32Z", entry_id: 33358, field1: "4", field2: "4", field3: "0"};

var data = [];
data.Push(feed);

console.log(data);

Au lieu de :

var my_json = {created_at: "2017-03-14T01:00:32Z", entry_id: 33358, field1: "4", field2: "4", field3: "0"};

var data = [];
for(var i in my_json) {
    data.Push(my_json[i]);
}

console.log(data);

10
Rohit Jindal

Vous devez avoir le tableau 'data' en dehors de la boucle, sinon il sera réinitialisé à chaque boucle et vous pourrez aussi pousser directement le json. Trouvez la solution ci-dessous: -

var my_json;
$.getJSON("https://api.thingspeak.com/channels/"+did+"/feeds.json?api_key="+apikey+"&results=300", function(json1) {
console.log(json1);
var data = [];
json1.feeds.forEach(function(feed,i){
    console.log("\n The details of " + i + "th Object are :  \nCreated_at: " + feed.created_at + "\nEntry_id:" + feed.entry_id + "\nField1:" + feed.field1 + "\nField2:" + feed.field2+"\nField3:" + feed.field3);      
    my_json = feed;
    console.log(my_json); //Object {created_at: "2017-03-14T01:00:32Z", entry_id: 33358, field1: "4", field2: "4", field3: "0"}
    data.Push(my_json);
     //["2017-03-14T01:00:32Z", 33358, "4", "4", "0"]
}); 
console.log(data);
0
Jay

pouvez-vous essayer quelque chose comme ça. Vous devez mettre chaque json dans les données et non json [i], car dans la façon dont vous le faites, vous obtenez et ne mettez que les propriétés de chaque json. Mettez le JSON entier à la place dans les données 

 var my_json;
    $.getJSON("https://api.thingspeak.com/channels/"+did+"/feeds.json?api_key="+apikey+"&results=300", function(json1) {
    console.log(json1);
        var data = [];
    json1.feeds.forEach(function(feed,i){
        console.log("\n The details of " + i + "th Object are :  \nCreated_at: " + feed.created_at + "\nEntry_id:" + feed.entry_id + "\nField1:" + feed.field1 + "\nField2:" + feed.field2+"\nField3:" + feed.field3);      
        my_json = feed;
        console.log(my_json); //Object {created_at: "2017-03-14T01:00:32Z", entry_id: 33358, field1: "4", field2: "4", field3: "0"}
        data.Push(my_json);
    }); 
0
strash