【问题标题】:Access elements in JSON after ajax requestajax请求后访问JSON中的元素
【发布时间】:2014-12-16 13:26:21
【问题描述】:

我花了过去几个小时试图弄清楚这一点。 我使用 JQuery 发出 ajax 请求。我得到字符串格式的响应,我使用

jQuery.parseJSON(response);

将其转换为对象。 这是我的回应:

{
    "columns": ["n"],
    "data": [
        [{
            "extensions": {},
            "labels": "http://localhost:7474/db/data/node/168/labels",
            "outgoing_relationships": "http://localhost:7474/db/data/node/168/relationships/out",
            "traverse": "http://localhost:7474/db/data/node/168/traverse/{returnType}",
            "all_typed_relationships": "http://localhost:7474/db/data/node/168/relationships/all/{-list|&|types}",
            "property": "http://localhost:7474/db/data/node/168/properties/{key}",
            "self": "http://localhost:7474/db/data/node/168",
            "properties": "http://localhost:7474/db/data/node/168/properties",
            "outgoing_typed_relationships": "http://localhost:7474/db/data/node/168/relationships/out/{-list|&|types}",
            "incoming_relationships": "http://localhost:7474/db/data/node/168/relationships/in",
            "create_relationship": "http://localhost:7474/db/data/node/168/relationships",
            "paged_traverse": "http://localhost:7474/db/data/node/168/paged/traverse/{returnType}{?pageSize,leaseTime}",
            "all_relationships": "http://localhost:7474/db/data/node/168/relationships/all",
            "incoming_typed_relationships": "http://localhost:7474/db/data/node/168/relationships/in/{-list|&|types}",
            "metadata": {
                "id": 168,
                "labels": []
            },
            "data": {
                "name": "1"
            }
        }]
    ]
}

我尝试访问该对象的特定元素,但没有得到任何回报。当我尝试这个时

var test = json.data;

它有效,但我如何访问保存在元数据中的值。 我试试这个,但我得到“未定义”:

var test = json.data.metadata.id;

知道我错过了什么吗?

【问题讨论】:

  • Data 是一个包含数组的数组,因此您将无法使用对象表示法访问它。
  • 试试这个 json.data[0][0].metadata.id;
  • 正如人们所指出的,它是一个数组。那些括号就是数组。您会注意到您的数据部分后面有两个括号,表示双数组。

标签: javascript json object


【解决方案1】:

它是一个数组,所以你必须使用索引

var test = json.data[0][0].metadata.id;

json.data[0] 返回 [{...}] 并再次 [{...}][0] 返回 {...} 具有 metadata 对象,这又是 id 属性,这是您所需要的。

【讨论】:

  • @dkar 发生了。很高兴能帮助你:)
【解决方案2】:

json.data 是一个双精度数组。

这应该可行:

var test = json.data[0][0].metadata.id;

【讨论】:

    【解决方案3】:

    试试:

    var test = json.data[0][0].metadata.id;
    

    json.data 是一个数组数组。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-03-14
      • 2023-03-10
      • 2020-06-20
      • 2013-01-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多