2017-08-03 39 views
-1

我有如下JSON响应....在邮差的Json体阵列验证使用Javascript

{ 
    "errors": [ 
    { 
     "status": "XXXX", 
     "source": ["pointer","value"], 
     "detail": "ZZZZZZZZZZZZZZ." 
    }, 
    { 
     "status": "XXXX", 
     "source": ["pointer","value"], 
     "detail": "ZZZZZZZZZZZZZZZ." 
    }, 
    { 
     "status": "XXXX", 
     "source": ["pointer"], 
     "title": " ZZZZZZZZZZZZZZZZ" 
    } 
    ] 
} 

我要检查天气源是具有两个指针和值中的所有字段或没有。 我尝试了一些东西,如下..

responseJson = JSON.parse(responseBody); 
var list = responseBody.length; 

tests["Expected fields"] = list === undefined || errors[0].source=== ["pointer","value"]; 

是否有人可以帮忙吗?

+0

为什么不使用'responseJson'? –

回答

0

你需要的是这样的:

var dataHaveIt = { 
 
    "errors": [{ 
 
     "status": "XXXX", 
 
     "source": ["pointer", "value"], 
 
     "detail": "ZZZZZZZZZZZZZZ." 
 
    }, 
 
    { 
 
     "status": "XXXX", 
 
     "source": ["pointer", "value"], 
 
     "detail": "ZZZZZZZZZZZZZZZ." 
 
    } 
 
    ] 
 
}; 
 

 
var dataDontHaveIt = { 
 
    "errors": [{ 
 
     "status": "XXXX", 
 
     "source": ["pointer", "value"], 
 
     "detail": "ZZZZZZZZZZZZZZ." 
 
    }, 
 
    { 
 
     "status": "XXXX", 
 
     "source": ["pointer", "value"], 
 
     "detail": "ZZZZZZZZZZZZZZZ." 
 
    }, 
 
    { 
 
     "status": "XXXX", 
 
     "source": ["pointer"], 
 
     "title": " ZZZZZZZZZZZZZZZZ" 
 
    } 
 
    ] 
 
}; 
 

 
var allHaveIt = false; 
 
allHaveIt = dataHaveIt.errors.reduce(function(result, element) { 
 
    return result && element.source.includes("pointer") && element.source.includes("value") 
 
}, true); 
 

 
console.log(allHaveIt); 
 

 
allHaveIt = dataDontHaveIt.errors.reduce(function(result, element) { 
 
    return result && element.source.includes("pointer") && element.source.includes("value") 
 
}, true); 
 

 
console.log(allHaveIt)

实际工作是在此代码完成的:

allHaveIt = dataHaveIt.errors.reduce(function(result, element) { 
    return result && element.source.includes("pointer") && element.source.includes("value") 
}, true); 

当作为最后一个参数true传递给reduce()方法我们假设所有的值都存在,那么reduce()将遍历所有元素并在includes()的帮助下,我们可以检查source属性是否包含这些元素