2017-08-03 1 views
-1

Je réponse JSON comme ci-dessous ....Json validation Array Corps en Postman utilisant Javascript

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

Je dois vérifier la météo Source est d'avoir deux pointeur et la valeur dans tous les champs ou non. J'ai essayé quelque chose comme ci-dessous ..

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

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

Quelqu'un peut-il s'il vous plaît aider?

+0

Pourquoi n'utilisez-vous pas 'responseJson'? –

Répondre

0

Avez-vous besoin de quelque chose comme ceci:

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)

Le travail réel est fait dans ce code:

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

Lors du passage en dernier paramètre true à reduce() méthode que nous supposons que toutes les valeurs existent, alors reduce() passera par tous les éléments et avec l'aide de includes() nous pouvons vérifier si la propriété source contient ces éléments