使用javascript解析JSON在从json响应获取值时给出了未定义

时间:2011-10-11 13:15:31

标签: javascript json

我正在使用javascript

解析json字符串
    {
      "head":   {
        "example": "0"
         },
      "res":   {
        "@test": "121",
        "@found": "5"
     }
}

我从远程站点获取http响应,我使用javascript来提取@found值.i使用下面的代码。

 var json=eval('('+request.responseText+')');
        alert(json.head.res.@found);

给我一​​个空值,请你告诉我怎么解析这个。

5 个答案:

答案 0 :(得分:3)

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

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

  

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

What characters are valid for JavaScript variable names?

<小时/> Per Topera的答案头和res在你的对象中处于同一级别而不是嵌套。

答案 1 :(得分:1)

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

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

答案 2 :(得分:0)

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

res不在头脑中。

答案 3 :(得分:0)

试试json.res['@found']。无法使用点表示法访问无效变量名称的JavaScript对象属性。另外,正如其他人所指出的那样,@ found并不在头脑中。

答案 4 :(得分:0)

解决这三件事:

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