私はURLからJSONデータを取得しようとしています。それはオブジェクトの形をしており、オブジェクトデータを配列にプッシュしなければなりません。
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"]
});
上記のようにmy_json varにオブジェクト形式のJSONデータがあるので、そのオブジェクトを以下の形式の配列としてvarデータに格納しなければなりません。
[{
"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"
}];
誰かやり方を教えてくれませんか?
**観察することができます。
**これを試してみてください:***。
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);
代わりに:があります。
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);
のようなものを試してみてください。json[i]ではなく、それぞれのjsonをdataに入れなければなりません。なぜなら、あなたのやり方では、それぞれのjsonのプロパティだけを取得して入れているからです。代わりにjson全体をデータに入れてください。
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);
});
ループの外に 'data' の配列を置く必要があります。そうしないと、ループごとにリセットされてしまいます。解決策は以下の通りです。
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);