javascript - JSON 数组和 Javascript

标签 javascript json

我是 json 的新手。我创建了与附加的 json 字符串结构相似的对象。我相信我有意创建的是一个嵌套数组对象...

  {
   "tracelog":{
      "title":"",
      "phase":"12",
      "users":"",
      "logduration":"",
      "logdurationtype":"undefined",
      "showlogduedate":"no",
      "durationstartfield":"",
      "fields":[
         {
            "atts":[
               {
                  "name":"dfvdfv",
                  "fieldtype":"text",
                  "followedbydate":"no",
                  "datetype":"---",
                  "fieldduration":"---",
                  "fielddurationtype":"undefined",
                  "fielddurationstart":"",
                  "autocalcunits":"none",
                  "validationtype":"none",
                  "fieldvisibleto":"",
                  "fieldaccessibleto":"",
                  "dropdown":""
               }
            ]
         },
         {
            "atts":[
               {
                  "name":"ffff",
                  "fieldtype":"text",
                  "followedbydate":"no",
                  "datetype":"---",
                  "fieldduration":"---",
                  "fielddurationtype":"undefined",
                  "fielddurationstart":"",
                  "autocalcunits":"none",
                  "validationtype":"none",
                  "fieldvisibleto":"",
                  "fieldaccessibleto":"",
                  "dropdown":""
               }
            ]
         }
      ]
   }
}

我想要做的是找到名为“atts”的数组的长度。我按如下方式解析了 JSON 字符串......

var obj = jQuery.parseJSON(jsonstring);

...然后再这样称呼对象...

obj.tracelog.fields.length

准确地告诉我有多少字段。

obj.tracelog.fields[0].atts.name

... 给了我名字,但抛出一个控制台错误,说 field[0] 未定义。所以它有效,但它没有。而....

obj.tracelog.fields[0].atts.length

没有给我“atts”数组中字段的数量(如果它实际上是一个数组 - id 喜欢它)但给我“未定义”。

有人能指出我哪里出了问题吗?

谢谢。

最佳答案

obj.tracelog.fields[0].atts 是一个数组,因此您必须像这样访问它:

obj.tracelog.fields[0].atts[0].name

Working example

解决你问题的后半部分:

obj.tracelog.fields[0].atts.length does 为您提供数组中项目的数量,在您的示例中是一个对象。看起来您真正想要做的是计算该数组中第一个对象的属性数(即 obj.tracelog.fields[0].atts[0])。没有简单的 .length 样式属性可以为您提供对象的属性数量,但您可以遍历它们并像这样计数:

var count = 0;
for (var test in obj.tracelog.fields[0].atts[0]) {
    count++;
}
 alert(count);

关于javascript - JSON 数组和 Javascript,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23796667/

相关文章:

javascript - 调用 $scope 函数的自定义指令导致 $rootScope :infdig

php - 我应该使用 XMLHttpRequest/JSON 还是 iFrame?

javascript - 如何使用 JavaScript 检测鼠标右键单击 + 粘贴?

javascript - 提交表单时是否可以使用操作 ="someFunction()"?

javascript - Windows 8 WinJS 应用程序中的应用程序启动是否有唯一的 session ID?

python - 使用 urllib2 检查响应

PHP:获取关联数组返回 null,尽管存在于 var_dump 中

javascript - 使用 Swift 检测 WebView URL 的变化

javascript - 如何在 javascript 中切换两个元素而不删除

ajax - jQuery 获取 JSON 响应为空