Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/374.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在从JSON响应中获取值时,使用javascript解析JSON会导致未定义_Javascript_Json - Fatal编程技术网

在从JSON响应中获取值时,使用javascript解析JSON会导致未定义

在从JSON响应中获取值时,使用javascript解析JSON会导致未定义,javascript,json,Javascript,Json,我正在用javascript解析json字符串 { "head": { "example": "0" }, "res": { "@test": "121", "@found": "5" } } 我从远程站点获得http响应,并使用javascript提取@found值 var json=eval('('+request.responseText+')'); al

我正在用javascript解析json字符串

    {
      "head":   {
        "example": "0"
         },
      "res":   {
        "@test": "121",
        "@found": "5"
     }
}
我从远程站点获得http响应,并使用javascript提取@found值

 var json=eval('('+request.responseText+')');
        alert(json.head.res.@found);
给我一个空值,你能告诉我如何解析它吗

alert(json.head.res['@found']);
@无法启动变量名,因此必须使用括号表示法。或者将变量名更改为有效

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


Per Topera的答案head和res在对象中处于同一级别,不嵌套

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

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


Per Topera的答案head和res在对象中处于同一级别,不嵌套。

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

尝试以下操作:
json.res['@found']
属性“res”不在“head”属性内

alert(json.res['@found']);
试试这个:
json.res['@found']

alert(json.res['@found']);
res
不在头部内部


res
不在head内。

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

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

解决以下三个问题:

  • @
    不是有效的变量名字符。你应该考虑<代码> []/Cord>语法,而不是“点”。
  • res
    不在
    head
  • 请不要使用
    eval
    。我强烈建议您使用
    JSON.parse
    而不是
    eval
var json=json.parse(request.responseText); 警报(json.res['@found']); 解决以下三个问题:

  • @
    不是有效的变量名字符。你应该考虑<代码> []/Cord>语法,而不是“点”。
  • res
    不在
    head
  • 请不要使用
    eval
    。我强烈建议您使用
    JSON.parse
    而不是
    eval
var json=json.parse(request.responseText); 警报(json.res['@found']);
res与头部平行。迭代直到返回对象的深度。尝试警报(json.res.@found);res与头部平行。迭代直到返回对象的深度。尝试警报(json.res.@found);感谢您的建议,json是从xml转换而来的,因此名称以@开头。我使用json lib在java中转换它。感谢您的建议,json是从xml转换而来的,因此名称以@开头。我使用json lib在java中转换它。