簡體   English   中英

如何使用JavaScript訪問json中的嵌套鍵

[英]How to access a nested key in json using javascript

所以,我有這個json文件,在其中我必須取出fileName標記並使用它。

{
"dataset": {
    "private": false,
    "stdyDscr": {
        "citation": {
            "titlStmt": {
                "titl": "Smoke test",
                "IDNo": {
                    "text": "10.5072/FK2/WNCZ16",
                    ".attrs": {
                        "agency": "doi"
                    }
                }
            },
            "rspStmt": {
                "AuthEnty": "Dataverse, Admin"
            },
            "biblCit": "Dataverse, Admin, 2015, \"Smoke test\", http://dx.doi.org/10.5072/FK2/WNCZ16,  Root Dataverse,  V1 [UNF:6:iuFERYJSwTaovVDvwBwsxQ==]"
        }
    },
    "fileDscr": {
        "fileTxt": {
            "fileName": "fearonLaitinData.tab",
            "dimensns": {
                "caseQnty": "6610",
                "varQnty": "69"
            },
            "fileType": "text/tab-separated-values"
        },
        "notes": {
            "text": "UNF:6:K5wLrMhjKoNX7znhVpU8lg==",
            ".attrs": {
                "level": "file",
                "type": "VDC:UNF",
                "subject": "Universal Numeric Fingerprint"
            }
        },
        ".attrs": {
            "ID": "f6"
        }
    }
},

我主要使用d3.js,但jquery和javascript的某些部分使用了它。 現在我正在做:

d3.json(url,function(json){ 

              var jsondata=json;

                   var temp = jsondata.dataset.fileDscr.fileTxt.fileName;
}

有沒有辦法直接訪問fileName? 我問是因為,我必須使這個泛型適合其他json文件,其中嵌套可能不同。

這將返回JSON數據中某個鍵實例的值(如果存在)。

var data = {...};
function findValue(json, key) {
  if (key in json) return json[key];
  else {
    var otherValue;
    for (var otherKey in json) {
      if (json[otherKey] && json[otherKey].constructor === Object) {
        otherValue = findValue(json[otherKey], key);
        if (otherValue !== undefined) return otherValue;
      }
    }
  }
}
console.log(findValue(data, 'fileName'));

它將返回一個逗號分隔的字符串,其中包含指定鍵的所有值

function walk(obj,keyname) {    
    var propertyVal="";                                                                                 
        for (var key in obj) {
            if (obj.hasOwnProperty(key)) {
                var val = obj[key];                                                                                     
                if(typeof(val) == 'object') {
                    console.log(val);                                                                                               
                    propertyVal+= walk(val,keyname);                                                
                }else {
                    if(key == keyname){                                                     
                        propertyVal = propertyVal+","+obj[key];                                                                     
                    }   
                }
            }
        }   
        return propertyVal;                         
}
alert(walk(data,'filename').replace(',',''));

暫無
暫無

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

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