2016-08-04 4 views
1

Я делаю вызов API, который будет возвращать JSON в теле, и я хочу, чтобы сравнить JSON объекта с строкой. Как я могу это сделать?Как сравнить объект json со строкой?

API res.body возвращает следующий объект JSON:

{ 
    "name": "tenant_tree", 
    "documents": [ 
     { 
      "tags": [], 
      "scope": "all", 
      "tenant_id": "0", 
      "id": "9dd2c5a5-2de2-4ac8-b195-04290f83b6fb", 
      "version": 1,  
      "description": "", 
      "name": "0", 
      "grouping": "", 
      "perm_read": "all", 
      "perm_write": "all", 
      "version_author": "dg", 
      "version_date": 1470324147050, 
      "is_current": true, 
      "dependencies_guid": [""], 
      "dependencies_name": [""], 
      "display_name": "system" 
     }, 
} 

Я хочу, чтобы сравнить что-то вроде expect(res.body).toMatch('"name": "0"'); но терпит неудачу.

ответ

3

Не используйте сравнения строк или подстроку в строках здесь. Вы имеете дело с JSON, который имеет структуру и свои собственные синтаксические правила. Сравнить объектов вместо. Вот как вы можете проверить значение, соответствующее ключу name:

var obj = JSON.parse(res.body); 
expect(obj.name).toEqual("0"); 

Кроме того, jasmine-matchers пакет имеет некоторые advanced object matchers, проверить их.

+0

Привет @alecxe 'JSON.parse (res.body)' дает мне ошибку 'Неожиданный маркер O' и я попытался' JSON.stringify (res.body) ', который дает мне ошибку: 'undefined to equal 0' – ssharma

Смежные вопросы