如何将json对象与字符串进行比较?
问题描述:
我正在做一个API调用,将返回JSON在身体和我想比较JSON对象与字符串。我怎样才能做到这一点?如何将json对象与字符串进行比较?
API以下JSON对象res.body
回报:
{
"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"');
但这种失败。
答
我能够JSON值在API响应体通过比较:
expect(res.body.name).toEqual("0")
无需解析响应的。
答
不要在字符串中使用字符串比较或子字符串检查。您正在处理具有结构和自己的语法规则的JSON。改为比较对象。这里是你如何检查对应name
键的值:
var obj = JSON.parse(res.body);
expect(obj.name).toEqual("0");
此外,jasmine-matchers
包有一些advanced object matchers,检查出来。
嗨@alecxe'JSON.parse(res.body)'给我出错'意外标记O',我尝试'JSON.stringify(res.body)'这使我的错误: '未定义为等于0' – ssharma