2011-10-11 70 views
0

我解析一个JSON字符串全光照的JavaScript解析JSON给我不确定,同时从JSON响应所获得的价值

{ 
     "head": { 
     "example": "0" 
     }, 
     "res": { 
     "@test": "121", 
     "@found": "5" 
    } 
} 

我收到从远程站点的HTTP响应,我使用JavaScript来提取@found值.i使用下面的代码。

var json=eval('('+request.responseText+')'); 
     alert([email protected]); 

给了我一个空值u能请告诉我如何可以解析这一点。

+0

RES平行于头部。迭代到它返回对象的深度。试试alert(json.res。@ found); – hungryMind

回答

3
alert(json.head.res['@found']); 

@不适用于启动变量名称,因此您必须使用括号表示法。或者将变量名称更改为有效。

基本上,以正则表达式形式:[a-zA-Z _ $] [0-9a-zA-Z _ $] *。换言之,第一个字符可以是字母或_或$,其他字符可以是字母或_或$或数字。

What characters are valid for JavaScript variable names?


每Topera的回答头部和资源都在你的对象相同的水平不嵌套。

1

属性“res”不在“head”属性内。

试试这个:json.res['@found']

0
alert(json.res['@found']); 

res是不是里面的头。

0

尝试json.res['@found']。无法使用点符号访问不是有效变量名称的JavaScript对象属性。另外,正如其他人所指出的那样,@发现并不在意。

0

解决这些三两件事:

  • @是不是有效的变量名字符。你应该考虑[]语法而不是“点”。
  • res不在head
  • 请不要使用eval。我强烈建议你使用JSON.parse代替eval
var json = JSON.parse(request.responseText); 
alert(json.res['@found']); 
+0

感谢您的建议和json从xml转换,所以它的名称以@ .i开头,使用json-lib将其转换为java。 – Ramesh