使用JavaScript对象表示法访问json值

使用JavaScript对象表示法访问json值,javascript,json,Javascript,Json,我无法访问json值 {"phone": [ { "@attributes": { "type": "cell", "ext": "" } }, "(123) 456 7890", { "@attributes": { "type": "work", "ext": "" } } ]} 使用以下JavaScript:psudo for each phone line ... console.log(

我无法访问json值

{"phone": [
{
    "@attributes": {
        "type": "cell",
        "ext": ""
    }
}, "(123) 456 7890", {
    "@attributes": {
        "type": "work",
        "ext": ""
    }
}
]}
使用以下JavaScript:psudo

for each phone line ...

console.log(["@attributes"].type);
console.log(this); 
console.log(["@attributes"].ext);

... end for
我期望得到以下结果:

cell
work (123) 456 7890

由于
phone
是一个数组,请尝试以下操作:

   for(var i=0;i<phone.length;i++)
     console.log(phone[i].["@attributes"].type);

for(var i=0;i由于
phone
是一个数组,请尝试以下操作

   for(var i=0;i<phone.length;i++)
     console.log(phone[i].["@attributes"].type);

for(var i=0;i我很确定不能启动任何对象、关联数组键或任何非字母数字字符的对象


另外,您有3个对console的调用,只有两行预期的输出?console.log(此)输出是什么?

我很确定您不能启动任何对象、关联数组键或任何非字母数字字符的对象


另外,您有3次呼叫console,只有两行预期输出?console.log(此)输出是什么?

我认为您的
手机
阵列非常混乱,因为您有:

phone[0] === {'@attributes':...}
phone[1] === '(123) 456 7890'
phone[2] === {'@attributes':...}

这就是你真正想要的吗?

我认为你的
手机阵列相当混乱,因为你有:

phone[0] === {'@attributes':...}
phone[1] === '(123) 456 7890'
phone[2] === {'@attributes':...}

这就是您真正想要的吗?

事实上,您的json结构并不完美,因此这里是您所需输出的解决方案

var json = {"phone": [
{
    "@attributes": {
        "type": "cell",
        "ext": ""
    }
}, "(123) 456 7890", {
    "@attributes": {
        "type": "work",
        "ext": ""
    }
}
]};
 console.log(json['phone'][0]['@attributes'].type);
 console.log('<br/>'+json['phone'][1]);
 console.log('<br/>'+json['phone'][2]['@attributes'].type);
var json={“电话”:[
{
“@attributes”:{
“类型”:“单元格”,
“分机”:”
}
}, "(123) 456 7890", {
“@attributes”:{
“类型”:“工作”,
“分机”:”
}
}
]};
log(json['phone'][0]['@attributes'].type);
log(“
”+json['phone'][1]); log(“
”+json['phone'][2]['@attributes'].type);

实际上,您的json结构并不完美,因此下面是您所需输出的解决方案

var json = {"phone": [
{
    "@attributes": {
        "type": "cell",
        "ext": ""
    }
}, "(123) 456 7890", {
    "@attributes": {
        "type": "work",
        "ext": ""
    }
}
]};
 console.log(json['phone'][0]['@attributes'].type);
 console.log('<br/>'+json['phone'][1]);
 console.log('<br/>'+json['phone'][2]['@attributes'].type);
var json={“电话”:[
{
“@attributes”:{
“类型”:“单元格”,
“分机”:”
}
}, "(123) 456 7890", {
“@attributes”:{
“类型”:“工作”,
“分机”:”
}
}
]};
log(json['phone'][0]['@attributes'].type);
log(“
”+json['phone'][1]); log(“
”+json['phone'][2]['@attributes'].type);


我正在尝试访问电话号码。这是“this”的“value”。
@
不是JavaScript标识符的有效字符。您必须使用括号符号和字符串:
console.log(电话[I][“@attributes”].type)
@tnt您的json无效。编写正确的json后,请从jsonlint验证它。com@adeeljson来自php json_编码,原始xml为(123)456 7890如果您编写一个自定义的jsonI来访问电话号码会更好。这是“this”的“value”。
@
不是JavaScript标识符的有效字符。您必须使用括号符号和字符串:
console.log(phone[i][“@attributes”].type)
@tnt您的json无效。编写正确的json后,请从jsonlint验证它。com@adeeljson来自一个php json_编码,原始xml是(123)456 7890。如果您编写一个定制的json,那么它会更好。对象属性(JavaScript中没有“关联数组”这样的东西)可以是任何字符串。@dave这就是我试图访问的内容,它是json数据的电话号码部分。@RoToRa我只是在使用术语。除了您的json没有包装在{}中之外,我看不到console.log(这个)因为这超出了范围,除非您通过循环运行它。@tnt我理解,但是
不会计算任何值,您需要更改PHP用于输出的XML,以便获得更好的输出,或者手动创建JSON字符串并改为输出。实际上,您可以.Object properties(JavaScript中没有“关联数组”这样的东西)可以是任何字符串。@dave这就是我试图访问的内容,它是json数据的电话号码部分。@RoToRa我只是在使用术语。除了你的json没有包装在{}中之外,我看不到console.log(这个)因为这超出了范围,除非您通过循环运行它。@tnt我理解,但是
不会计算任何值,您需要更改PHP用于输出的XML,以便获得更好的输出,或者手动创建JSON字符串并输出。JSON来自PHP JSON\u编码原始xml是(123)456 7890hmm,因此应该进行一些验证,因为您无法确定哪个索引是电话号码或对象文本(属性),对吗?在下一个问题中,这里只有一个简单的循环:json来自php json编码,原始xml是(123)456 7890hmm,所以应该有一些验证,因为你不能确定哪个索引是电话号码或对象文字(属性),对吗?在你的下一个问题中,这里只有一个简单的循环:@diEcho..对不起{}切!@diEcho..对不起{}切!