如何将json对象与字符串进行比较?

时间:2016-08-04 17:01:29

标签: javascript json testing jasmine protractor

我正在进行API调用,它会在正文中返回 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"');这样的东西,但这失败了。

2 个答案:

答案 0 :(得分:4)

不要在字符串中使用字符串比较或子字符串检查。您正在处理具有结构和自己的语法规则的JSON。比较对象。以下是检查name键对应值的方法:

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

此外,jasmine-matchers包有一些advanced object matchers,请检查它们。

答案 1 :(得分:1)

我能够通过以下方式比较API响应体中的json值:

expect(res.body.name).toEqual("0")

无需解析响应。

参考链接:JSON.Parse,'Uncaught SyntaxError: Unexpected token o