Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/visual-studio/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在javascript中读取数组的数据对象_Javascript_Ajax_Json - Fatal编程技术网

在javascript中读取数组的数据对象

在javascript中读取数组的数据对象,javascript,ajax,json,Javascript,Ajax,Json,我有来自服务器的json数据 { "store":[{"skey":"asdsad123das","name":"Store1"}, {"skey":"3308d976d2647659f130d09593be845a","name":"joji store"}], "manager":[{"mkey":"asdsad123das","name":"manager 1"},{"mkey":"asdsad123da2","name":"Manager 2"},{"mkey":"asdsad12

我有来自服务器的json数据

{

"store":[{"skey":"asdsad123das","name":"Store1"},  {"skey":"3308d976d2647659f130d09593be845a","name":"joji store"}],

"manager":[{"mkey":"asdsad123das","name":"manager 1"},{"mkey":"asdsad123da2","name":"Manager 2"},{"mkey":"asdsad123da3","name":"Manager 3"}]

}
我想读那些数据。当我试着读它的时候,它总是给我不精确的答案。我正在做这样的事情

 success: function(msg){

            //alert(msg['store'].name);
            for (var keys in msg)
            {
                    //alert(keys);
                    alert(keys['name']);
                    for (var data in keys)
                    {
                            alert(data);

                    }
            }
      },

您访问JSON就像访问字典或数组一样。JSON的工作方式不同。假设我们将JSON存储在一个称为数据的变量中,如下所示:

var data = {
  "store": [ {
    "skey": "asdsad123das",
    "name": "Store1"
  }, {
    "skey": "3308d976d2647659f130d09593be845a",
    "name": "joji store"
  } ],
  "manager": [ {
    "mkey": "asdsad123das",
    "name": "manager 1"
  }, {
    "mkey": "asdsad123da2",
    "name": "Manager 2"
  }, {
    "mkey": "asdsad123da3",
    "name": "Manager 3"
  } ]
};
然后我们可以访问特定的密钥,如下所示:

data.store[0].skey     // skey of first element of store array of data object
如果要迭代数据中的数据,可以执行以下操作:

for (index in data.store) {
  console.log(data.store[index]);       // prints whole object
  console.log(data.store[index].skey);  // prints skey
  console.log(data.store[index].name);  // prints name
}

例如:

您正在访问JSON,就像访问字典或数组一样。JSON的工作方式不同。假设我们将JSON存储在一个称为数据的变量中,如下所示:

var data = {
  "store": [ {
    "skey": "asdsad123das",
    "name": "Store1"
  }, {
    "skey": "3308d976d2647659f130d09593be845a",
    "name": "joji store"
  } ],
  "manager": [ {
    "mkey": "asdsad123das",
    "name": "manager 1"
  }, {
    "mkey": "asdsad123da2",
    "name": "Manager 2"
  }, {
    "mkey": "asdsad123da3",
    "name": "Manager 3"
  } ]
};
然后我们可以访问特定的密钥,如下所示:

data.store[0].skey     // skey of first element of store array of data object
如果要迭代数据中的数据,可以执行以下操作:

for (index in data.store) {
  console.log(data.store[index]);       // prints whole object
  console.log(data.store[index].skey);  // prints skey
  console.log(data.store[index].name);  // prints name
}

示例:

一般来说,当您拥有一个对象,该对象具有从JSON数据或其他地方获得的命名键时,您可能不想迭代这些键。更可能的情况是,您希望通过名称来引用这些键。毕竟,商店和经理是完全不同的,不是吗

在大多数情况下,编写一个循环或类似的循环(如$)是没有多大意义的,每个循环都遍历存储和管理器,并对它们执行相同的操作。你可能想对商店做一件事,对经理做另一件事

OTOH,根据这里的特定数据,商店记录看起来确实很像经理记录。每个人都有一个名字;区别在于商店有一个skey,经理有一个mkey。因此,为了记录数据,您可以这样做:

请注意,我们使用data.store和data.manager访问两个单独的阵列中的每一个。我把它叫做数据而不是味精,因为味精听起来像是消息的缩写,而这似乎不是任何类型的消息

但是由于数组本身是相似的,所以我使用了一个公共函数来记录每个数组。该函数接受一个参数,告诉它是使用skey还是mkey

在处理这些数据的实际代码中,您可能会发现,您对经理所做的与对商店所做的是如此不同,以至于它们之间甚至没有这么多共同的代码。但一旦你能够可靠地访问这些数据,你就可以从中找到答案

现在最重要的提示是:您知道如何在您喜爱的浏览器中使用JavaScript调试器吗?我推荐一个内置在Chrome中的,但是Firefox也有FireBug和InternetExplorer中的内置调试器

如果添加调试器;语句,并在调试器打开的情况下加载页面,它将在该行代码上停止,然后您可以查看局部变量/监视面板中的变量,您可以使用控制台尝试不同的表达式,以查看它们的作用。您还可以单步执行代码、单步执行函数等,不再需要使用alert;您会发现这是一种更好的调试代码的方法


这是。如果您以前没有使用过这些调试工具,那么您应该认真停止正在进行的其他工作,并熟悉它们。这将带来巨大的回报。

一般来说,当您拥有一个从JSON数据或其他地方获得的具有命名键的对象时,您不太可能希望迭代这些键。更可能的情况是,您希望通过名称来引用这些键。毕竟,商店和经理是完全不同的,不是吗

在大多数情况下,编写一个循环或类似的循环(如$)是没有多大意义的,每个循环都遍历存储和管理器,并对它们执行相同的操作。你可能想对商店做一件事,对经理做另一件事

OTOH,根据这里的特定数据,商店记录看起来确实很像经理记录。每个人都有一个名字;区别在于商店有一个skey,经理有一个mkey。因此,为了记录数据,您可以这样做:

请注意,我们使用data.store和data.manager访问两个单独的阵列中的每一个。我把它叫做数据而不是味精,因为味精听起来像是消息的缩写,而这似乎不是任何类型的消息

但是由于数组本身是相似的,所以我使用了一个公共函数来记录每个数组。该函数接受一个参数,告诉它是使用skey还是mkey

在处理这些数据的实际代码中,您可能会发现,您对经理所做的与对商店所做的是如此不同,以至于它们之间甚至没有这么多共同的代码。但一旦你能够可靠地访问这些数据,你就可以从中找到答案

现在最重要的提示是:您知道如何在您喜爱的浏览器中使用JavaScript调试器吗?我推荐一个内置在Chrome中的,但是Firefox也有FireBug和InternetExplorer中的内置调试器

如果你 添加调试器;语句,并在调试器打开的情况下加载页面,它将在该行代码上停止,然后您可以查看局部变量/监视面板中的变量,您可以使用控制台尝试不同的表达式,以查看它们的作用。您还可以单步执行代码、单步执行函数等,不再需要使用alert;您会发现这是一种更好的调试代码的方法


这是。如果您以前没有使用过这些调试工具,那么您应该认真停止正在进行的其他工作,并熟悉它们。这将获得巨大的回报。

您应该展示如何检索数据。数据以字符串形式从服务器发送,需要首先进行解析。如果您使用库请求数据,如果响应头正确和/或您指定请求json,则通常会自动执行此操作。请提供您为尝试读取数据而编写的代码。这将有助于确定你做错了什么。谢谢@Michal感谢您的回复,我更新了用于检索数据的代码。谢谢!这很有帮助。请参阅我的答案以了解详细信息,如果您需要更多关于它的说明,请告诉我。您应该展示如何检索数据。数据以字符串形式从服务器发送,需要首先进行解析。如果您使用库请求数据,如果响应头正确和/或您指定请求json,则通常会自动执行此操作。请提供您为尝试读取数据而编写的代码。这将有助于确定你做错了什么。谢谢@Michal感谢您的回复,我更新了用于检索数据的代码。谢谢!这很有帮助。请参阅我的答案了解详细信息,如果您需要更多的澄清,请在评论中告诉我。我真的非常感谢您,这就是我坚持的地方,您描述得非常好。我肯定会开始使用调试器。非常感谢您的提示和分享信息的这么多细节:太好了,我很高兴这是有用的。你会非常喜欢Chrome调试器帮助你追踪问题并深入了解你自己的代码和其他网站的方式。我真的非常感谢你,这就是我坚持的地方,你对它的描述非常好。我肯定会开始使用调试器。非常感谢您的提示和分享信息的这么多细节:太好了,我很高兴这是有用的。你会非常喜欢Chrome调试器帮助你追踪问题并深入了解你自己的代码和其他网站的方式。