2017-02-07 4 views
0

Я пытаюсь получить данные json с помощью url.Now мне нужно проанализировать данные Json, чтобы извлекать только данные из данных url.Я добавляю код ниже и json data.Can кто-нибудь поможет мне, как я могу анализировать данные фида из следующего json output.thankyou.Javascript JSON Parsing с использованием https url

JSON DATA:

{ 
    "channel": { 
    "id": 9, 
    "name": "my_house", 
    "description": "Netduino Plus connected to sensors around the house", 
    "latitude": "40.44", 
    "longitude": "-79.996", 
    "field1": "Light", 
    "field2": "Outside Temperature", 
    "created_at": "2010-12-13T20:20:06-05:00", 
    "updated_at": "2014-02-26T12:43:04-05:00", 
    "last_entry_id": 6060625 
    }, 
    "feeds": [{ 
    "created_at": "2014-02-26T12:42:49-05:00", 
    "entry_id": 6060624, 
    "field1": "188", 
    "field2": "25.902335456475583" 
    }, { 
    "created_at": "2014-02-26T12:43:04-05:00", 
    "entry_id": 6060625, 
    "field1": "164", 
    "field2": "25.222929936305732" 
    }] 
} 

$.ajax({ 
    url: " https://api.thingspeak.com/channels/9/feeds.json?results=2", 
    dataType: "json", 
    cache: false, 
    error: function(xhr, ajaxOptions, thrownError) { 
    debugger; 
    alert(xhr.statusText); 
    alert(thrownError); 
    }, 
    success: function(json1) { 
    console.log(json1); 
    if (json1.length == 0) { 
     window.alert("The returned output array length is ZERO."); 
    } else { 
     var obj1, Feed; 
     for (var x = 0; x < json1.length; x++) { 
     obj1 = json1[x]; 
     console.log(obj1); 
     if (obj1 == null || obj1 == "") { 
      window.alert("\n The " + (x + 1) + "th object is NULL/BLANK."); 
     } else { 

      if (obj1.feeds == null || obj1.feeds.length == 0) { 
      window.alert("\n The name portion of " + (x + 1) + "th object is NULL/BLANK."); 
      } else { 
      Feed = obj1.feeds; 

      for (var k = 0; k < Feed.length; k++) { 
       console.log("\n The deails of " + (x + 1) + "th Object are : \nCreated_at: " + Feed[k].created_at + "\nEntry_id:" + Feed[k].entry_id + "\nField1:" + Feed[k].field1 + "\nField2:" + Feed[k].field2); 
      } 
      } 
     } 
     } 
    } 
    } 
}); 
+0

Прежде всего, эта длина имеет опечатку в нем: 'если (obj1.feeds == NULL || obj1.feeds.lenght == 0) {' –

+0

см Это Link.you получите некоторое представление , http://stackoverflow.com/questions/29936971/find-a-value-inside-array-of-json-object –

+0

Можете ли вы рассказать мне, что это за типография, я не могу ее взломать @ Marc-AntoineParent – Anusha

ответ

1

Просто разобрать массив кормах для индивидуального корма:

json1.feeds.forEach(function(feed){ 
    console.log("th Object are : \nCreated_at: " + feed.created_at 
    + "\nEntry_id:" + feed.entry_id + "\nField1:" + feed.field1 + "\nField2:" + feed.field2);  
}); 

https://plnkr.co/edit/WSgdO6dZsyIAQVxWkTzr?p=preview

+0

tq.It решил мою проблему @inQstvJs – Anusha

0

Проблема здесь заключается в том, что вы пытаетесь работать с str и попробуйте получить длину (json1.length), но jquery под капотом верните вам объект JSON (потому что вы указали dataType: "json").
Так что вам нужно работать не с строкой, а с объектом! И в вашем примере у вас есть простой объект с свойством feeds, поэтому вам нужен только массив перемещения, который находится в json1.feeds.

Вот мой пример (я только что обновил success callback):

json1.feeds.forEach(function(feed, i) { 
    // This is your code, I've just copy-paster it here. 
    console.log("\n The deails of " + i + "th Object are : \nCreated_at: " + feed.created_at + "\nEntry_id:" + feed.entry_id + "\nField1:" + feed.field1 + "\nField2:" + feed.field2); 
}); 
+0

tq.It решил мою проблему @ Vladimir KovPak – Anusha

2

json1 не является массивом, это объект. Вам нужно получить доступ к свойству .feeds объекта, чтобы добраться до массива каналов. Что-то вроде этого:

$.ajax({ 
    url: " https://api.thingspeak.com/channels/9/feeds.json?results=2", 
    dataType: "json", 
    cache: false, 
    error: function(xhr, ajaxOptions, thrownError) { 
    debugger; 
    alert(xhr.statusText); 
    alert(thrownError); 
    }, 
    success: function(json) { 
    console.log(json); 
    if (!json || json.feeds === undefined || json.feeds.length === 0) { 
     window.alert("The returned output array length is ZERO."); 
    } else { 
     json.feeds.forEach(function (feed, index) { 
     var indexPlusOne = index + 1; 
     console.log("The deails of " + indexPlusOne + "th Object are : \nCreated_at: " + feed.created_at + "\nEntry_id:" + feed.entry_id + "\nField1:" + feed.field1 + "\nField2:" + feed.field2); 
     }); 
    } 
    } 
}); 

Вы могли бы сделать его немного более удобным для чтения, если вы используете ES2015 и шаблон строки:

$.ajax({ 
    url: " https://api.thingspeak.com/channels/9/feeds.json?results=2", 
    dataType: "json", 
    cache: false, 
    error: (xhr, ajaxOptions, thrownError) => { 
    debugger; 
    alert(xhr.statusText); 
    alert(thrownError); 
    }, 
    success: (json) => { 
    console.log(json); 
    if (!json || json.feeds === undefined || json.feeds.length === 0) { 
     window.alert("The returned output array length is ZERO."); 
    } else { 
     json.feeds.forEach(function (feed, index) { 
     var indexPlusOne = index + 1; 
     console.log(` 
The deails of ${indexPlusOne}th Object are: 
Created_at: ${feed.created_at} 
Entry_id: ${feed.entry_id} 
Field1: ${feed.field1} 
Field2: ${feed.field2}`); 
     }); 
    } 
    } 
}); 

Если вам действительно нужно использовать опцию cache Я хотел бы также упростить его, чтобы просто использовать jQuery.getJSON вместо jQuery.ajax:

$.getJSON("https://api.thingspeak.com/channels/9/feeds.json?results=2") 
    .fail((req, status, err) => { 
    console.error(`AJAX call failed: ${err}`); 
    }) 
    .done((data) => { 
    console.log(data); 
    if (!data || data.feeds === undefined || data.feeds.length === 0) { 
     window.alert("The returned output array length is ZERO."); 
    } else { 
     data.feeds.forEach(function (feed, index) { 
     var indexPlusOne = index + 1; 
     console.log(` 
The deails of ${indexPlusOne}th Object are: 
Created_at: ${feed.created_at} 
Entry_id: ${feed.entry_id} 
Field1: ${feed.field1} 
Field2: ${feed.field2}`); 
     }); 
    } 
    }); 
+0

tq.it решил мой проблема @ Бесполезный код – Anusha

0

ответ для вышеуказанного вопроса заключается в следующем.

$.ajax({ 
    url: " https://api.thingspeak.com/channels/9/feeds.json?results=2", 
    dataType: "json", 
    cache: false, 
    error: function(xhr, ajaxOptions, thrownError) { 
    debugger; 
    alert(xhr.statusText); 
    alert(thrownError); 
    }, 
    success: function(json1) { 
    console.log(json1); 
    json1.feeds.forEach(function(feed, i) { 
    console.log("\n The deails of " + i + "th Object are : \nCreated_at: " + feed.created_at + "\nEntry_id:" + feed.entry_id + "\nField1:" + feed.field1 + "\nField2:" + feed.field2); 
}); 
Смежные вопросы