比较两个JSON文件

我正在尝试比较赛普拉斯中的两个JSON文件。

要查看是否可行,我只复制了data.json,并将其副本重命名为data2.json

var comparejson = cy.readFile('data2.json')
cy
  .readFile('data.json')
  .then(json => JSON.stringify(json)).should('eq',JSON.parse(comparejson))

这是我得到的错误:

SyntaxError: Unexpected token o in JSON at position 1
charlestri 回答:比较两个JSON文件

啊,可怕的token o。它正在从[object Object]读取'o',它是普通Ol'JavaScript对象的toString表示形式。

您可以通过输入JavaScript REPL和:

08:54 $ node
Welcome to Node.js v13.0.1.
Type ".help" for more information.
> JSON.parse({}.toString())
Thrown:
SyntaxError: Unexpected token o in JSON at position 1
> ({}).toString()
'[object Object]'

因此,将来,只要您看到该错误,就知道您已跳过在某个地方进行字符串化的步骤!

这里的窍门是readFile返回一个对象(不是字符串,JSON文件为parsed by Cypress into JavaScript),但是您正在对该对象调用JSON.parse

尝试一下:

cy
  .readFile('data2.json')
  .then(data2 => cy.readFile('data.json').should('deep.equal',data2))

请注意此处使用deep.equal,因为我们正在比较对象。

本文链接:https://www.f2er.com/3081575.html

大家都在问