json对象中数组的Javascript(jQuery)测试和返回值

json对象中数组的Javascript(jQuery)测试和返回值,javascript,jquery,arrays,Javascript,Jquery,Arrays,UDPATE:那么,通过多维数组扫盲的最佳方式是什么呢。因此,检查复杂数组中的对象并获取它们的值。 { "error":{ "data": { "id":"3", "name":"404", "content" : "value" }, "response":"Invalid path.", "code": 1 } } if(json.error.data !

UDPATE:那么,通过多维数组扫盲的最佳方式是什么呢。因此,检查复杂数组中的对象并获取它们的值。

{ "error":{ "data": { "id":"3", "name":"404", "content" : "value" }, "response":"Invalid path.", "code": 1 } } if(json.error.data !== undefined) { alert('value: ' + json.error.data); } {“错误”:{ “数据”:{ “id”:“3”, “名称”:“404”, “内容”:“价值” }, “响应”:“无效路径”, “代码”:1 } } if(json.error.data!==未定义){ 警报('值:'+json.error.data); } 我这里有个问题;我似乎无法正确解决问题。当我尝试检查数组的值时,如果数组数据不存在或内容不存在,它将返回错误“UncaughtTypeError:无法读取未定义的属性'data'。我知道有一种方法可以使用indexOf()来测试值是否存在,但这对我没有帮助。我需要测试该值,然后捕获它。请记住,这是一个多维数组,因此仅使用indexOf不一定能够确定数组的复杂性以及如何确定它的位置

好吧,简单地说。我需要说,数组数据和参数内容是否存在于上面显示的错误数组中。如果有,那么抓住它的价值,做点什么

我还阅读了关于jQuery.inArray()的文章;我不知道如何将其用于复杂的多维数组


使用(x in z){}

的循环是实现这一点的唯一成功方法。我认为这很简单,因为您用引号包围了对象,使其成为字符串而不是对象。去掉这些,它应该可以正常工作。

我想你的目标搞错了

json = '{...

您从一个报价开始。变量
json
现在是一个
string
,而不是
JavaScript
对象。

要测试
未定义的
,请使用
typeof
和字符串
'undefined'

另外,在将字符串解析为JSON后,检查
.data
.error
父属性是否存在。从您的代码中还不清楚是否确实做到了这一点

var obj = JSON.parse(json);

if (typeof obj.error !== 'undefined') {
  if(typeof obj.error.data  !== 'undefined') {
        alert('value: ' + obj.error.data);
  }
}


将您的对象声明为

json = 
{ 
    "error":{
        "data": {
            "id":"3",
            "name":"404",
            "content" : "value"
        },
        "response":"Invalid path.",
        "code": 1
    }
};

如果您在尝试访问json.error.data时看到“无法读取未定义的属性'data',那么问题不在于数据未定义,而在于错误未定义。这显然不是您实际的代码。字符串是从服务器获取JSON数据的一种方式吗?JSON数据被转换成一个对象并固定在一个数组中。当我试图访问该数组以测试是否存在另一个具有值的数组时,我得到了一个错误。所以请显示实际代码。您发布的代码有一个明显的问题,
json
是一个字符串,而不是一个对象,人们正在为此编写答案。我们可以任意猜测您没有显示的代码可能有什么问题,但这只会浪费每个人的时间。@nnnnnn我无法显示我的实际代码,因为它是一个位于backbone.js模型中的数组对象,将json拉到我的restful api中。因此,接下来最好的事情就是向您展示我的json,这样您就可以理解它的结构。我只是向您展示了json,这样您就可以理解我在做什么。在我的代码中,json数据被转换成一个对象。但是当我尝试测试一个值时,我得到了一个错误,它甚至不是一个字符串。这是一个语法错误。是的,这就是为什么我删除了空格,以说明我的观点。但最重要的是,这是一个语法错误。控制台正在输出未捕获的TypeError:无法读取未定义的“您无法将未定义的与相等运算符进行比较”的属性“数据”-当然可以:
if(obj.error===undefined)
(假设您已确保未定义的
undefined
未给定定义值),或者
if(obj.error==无效0)
。感谢您花时间真正理解这个问题。Michael的存在是为了避免所有这些if语句的处理。难道没有一个jQuery函数可以检查多维数组中的对象,然后获取其值吗?@kr1zmo不确定jQuery函数,但您可以缩短为
if(obj.error&&obj.error.data)
,但这不会专门针对未定义的
数据进行测试。它可能为null或false,并且条件仍然会通过。
json = 
{ 
    "error":{
        "data": {
            "id":"3",
            "name":"404",
            "content" : "value"
        },
        "response":"Invalid path.",
        "code": 1
    }
};