首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何检查JSON数据中是否存在值/属性

如何检查JSON数据中是否存在值/属性
EN

Stack Overflow用户
提问于 2013-08-26 09:08:39
回答 3查看 16.3K关注 0票数 4

我使用Google接收书籍列表,但有时一些图书条目没有一些键/属性,例如Authors,或者没有缩略图。因此,JavaScript说,我试图访问的属性是未定义的,我的应用程序会停止工作。

示例包含keywork的图书搜索中的Json数据示例

全链路

代码语言:javascript
复制
https://www.googleapis.com/books/v1/volumes?q=java&callback=jQuery191020691258599981666_1377508821982&_=1377508821983

例如,当作者失踪时

代码语言:javascript
复制
TypeError: row.volumeInfo.authors is undefined

我试着提出两种解决方案

代码语言:javascript
复制
if ( typeof (authors) != "undefined"){}

代码语言:javascript
复制
if('authors' in booksObject) {}

但它们似乎都不起作用,因为它们从来不进入循环,即使在这个早熟存在的时候也是如此。

这就是我打电话的地方

代码语言:javascript
复制
function populateListview(books) {

//iterate each returned item
$.each(books.items, function(i, row) {

    //populate each row in the list
    var htmlString = '<li><a href="book_details.html?id=' + row.id + '"><img src="';

    htmlString += row.volumeInfo.imageLinks.thumbnail + '"';
    htmlString += 'class="ui-li-has-thumb"/><h3>';
    //Check if authors exists in JSON
    htmlString += row.volumeInfo.title + '</h3><p>' + row.volumeInfo.authors[0] + '</p></a></li>';

    //If not add an undefined authors string in the authors 


    console.log(htmlString);

    //append new html to the list
    $('#book_list').append(htmlString);
});

$('#book_list').listview('refresh');
// refresh the list-view so new elements are added to the DOM
};
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2013-08-26 09:10:40

您可以检查$.isArray(row.volumeInfo.authors) && row.volumeInfo.authors.length > 0

代码语言:javascript
复制
console.log(books.toString());
// iterate each returned item
$.each(books.items, function(i, row) {

    // populate each row in the list
    var htmlString = '<li><a href="book_details.html?id=' + row.id
            + '"><img src="';

    htmlString += row.volumeInfo.imageLinks.thumbnail + '"';
    htmlString += 'class="ui-li-has-thumb"/><h3>';
    if ($.isArray(row.volumeInfo.authors) && row.volumeInfo.authors.length > 0) {
        // code for what to do with json here
        htmlString += row.volumeInfo.title + '</h3><p>'
                + row.volumeInfo.authors[0] + '</p></a></li>';
    } else {
        htmlString += row.volumeInfo.title + '</h3><p>' + "Author Undifined"
                + '</p></a></li>';
    }

    console.log(htmlString);

    // append new html to the list
    $('#book_list').append(htmlString);
});

$('#book_list').listview('refresh');
// refresh the list-view so new elements are added to the DOM
票数 1
EN

Stack Overflow用户

发布于 2013-08-26 09:19:25

试试这个:

代码语言:javascript
复制
if(booksObject.image) {
 //do stuff with it
 } else if( booksObject.author ) {
 //do stuff with author
 }
票数 1
EN

Stack Overflow用户

发布于 2014-06-11 13:49:24

这里有一种非常简单的方法来检查JSON中是否存在任何键或值。

代码语言:javascript
复制
var jsonString = JSON.stringify(yourJSON);

if (jsonString .indexOf("yourKeyOrValue") > -1){
    console.log("your key or value exists!");
}

它是快速,简单,容易。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18440522

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档