【问题标题】:How to compare json object with a string?如何将json对象与字符串进行比较?
【发布时间】:2016-08-04 17:01:29
【问题描述】:

我正在进行 API 调用,它将在正文中返回 JSON,我想将 JSON 对象与 String 进行比较。我该怎么做?

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"'); 之类的东西,但这失败了。

【问题讨论】:

    标签: javascript json testing jasmine protractor


    【解决方案1】:

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

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

    另外,jasmine-matchers 包中有一些 advanced object matchers,请查看它们。

    【讨论】:

    • 嗨@alecxe JSON.parse(res.body) 给我错误Unexpected token o 我试过JSON.stringify(res.body) 这给了我错误:undefined to equal 0
    【解决方案2】:

    我可以通过以下方式比较 API 响应正文中的 json 值:

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

    无需解析响应。

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-23
      • 1970-01-01
      • 1970-01-01
      • 2015-07-17
      • 2013-02-12
      • 1970-01-01
      相关资源
      最近更新 更多