簡體   English   中英

如何使用jQuery從JSON文件中檢索特定數據

[英]How to retrieve particular data from JSON file using jQuery

我正在嘗試使用jQuery讀取系統中本地存儲的JSON文件。 我想從該文件中獲取一些特定數據。 讓我們假設文件如下所示:

{"statements":[{"subject":{"uriString":"A","localNameIdx":-1},
"predicate":{"uriString":"B","localNameIdx":-1},
"object":{"uriString":"C"}}

這是Java程序編寫的。 我的問題是:如何使用jQuery從此文件中檢索以下數據A, B and C 我的讀取JSON文件的代碼是:

var arr = [];
$.getJSON("/Users/docs/sample.json", function(data) {
    $.each(data.statements, function(i, val) {
        arr.push(val);
    }
}

該代碼不會檢索A, B and C 誰能幫助我如何獲取這些元素並將它們存儲在jQuery中的數組中。 您的幫助將不勝感激。

好。 切記JSON(JavaScript對象表示法)只是一個JavaScript對象,上面有一層有趣的外衣。 因此,如果您具有JSON字符串和Jquery,則可以使用parseJSON方法將字符串重新水化為真正代表的對象。

如...

var obj = jQuery.parseJSON( '{ "name": "John" }' );
alert( obj.name === "John" );

你應該嘗試這樣的事情

$.each(data.statements[0], function(i, v){
    // arr.push(v.uriString);
    console.log(v.uriString); // will print A B C
});

但是,在這種情況下,您的object應如下所示

var data = {
    "statements":[
        {
            "subject":{"uriString":"A","localNameIdx":-1},
            "predicate":{"uriString":"B","localNameIdx":-1},
            "object":{"uriString":"C","localNameIdx":-1}
        }
    ] // <-- mising in your question
}; // <-- mising in your question

在您的問題中,我沒有找到結尾處的]} ,我認為這是一個錯字,請檢查此示例。

您僅在遍歷data.statements 這僅給您一項data.statements.subject ,即{"uriString":"A","localNameIdx":-1}

似乎您想獲取每個項目的uriString ,而不管該項目如何嵌套。 為此,定義一個遞歸函數是最簡單的。

    function getUriStrings( obj ){
        var results = [];
        for(var key in obj){
            if(key == "uriString"){
                results.push(obj[key]);
            }
            else if(obj[key] != null && typeof obj[key] === 'object'){
                results.push.apply(results, getUriStrings(obj[key]));
            }

        }
        return results;
    }

然后您的代碼將是:

    var arr = [];
    $.getJSON("/Users/docs/sample.json", function(data) {
        arr = getUriStrings( data );
    }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM