javascript - 如何使用 javascript 访问 json 中的嵌套键

标签 javascript json d3.js

所以,我有这个 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'));

关于javascript - 如何使用 javascript 访问 json 中的嵌套键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38987617/

相关文章:

javascript - 鼠标悬停工具提示不会固定在右上角

javascript - 为什么这个函数返回未定义?

javascript - 当用户输入时,在同一页面上以 HTML 格式显示 FCKeditor 输入数据?

javascript - 如何默认 Html.DropDownList 不选择?

javascript - ajax获取另一个网站的内容并使用选择器

ruby-on-rails - 努力理解模型和关联是如何保存在 Rails 中的

javascript - d3 附加 img 到 li

javascript - 表单验证后,表单不提交

php 每个循环插入数据两次,而不是按预期插入每一行

d3.js - D3 - 数据更改时更改轴刻度