我是 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
解决你问题的后半部分:
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/