【问题标题】:grunt.file.readJSON with single element带有单个元素的 grunt.file.readJSON
【发布时间】:2015-09-24 21:46:24
【问题描述】:

我遇到了最奇怪的问题,希望其他人已经看到了这个问题,甚至可能有解决办法。

以前,我在我的 grunt.js 文件中有一组用于量角器测试的参数。下面的简单例子:

params: {
  userId: "abc",
  someData: ["abc"]
}

这没有问题。然后随着数据的增长,我觉得将其外部化到另一个文件会更好,所以我这样做并使用 grunt.file.readJSON 加载了该文件。

params: grunt.file.readJSON('my/external/file.json');

以及文件的内容:

{
   "userId": "abc",
   "someData": ["abc"]
}

检查params.userId 效果很好。但是,如果我检查 params.someData 的长度,我得到的长度是 3 而不是 1。数组已更改。但是,如果我对 someData 再做一次这样的更改:

{
   "userId": "abc",
   "someData": ["abc", "def"]
}

然后数组按预期显示两个元素。有任何想法吗?如何用字符串保存单元素数组?

【问题讨论】:

  • 我测试的时候没问题。 grunt.file.readJSON 只是对文件的内容执行JSON.parse,因此不应该与文件解析有关。 grunt.file.readJSON('my/external/file.json') 会返回错误数据还是稍后损坏?
  • 另外,你用grunt-protractor-runner吗?
  • 是的,我正在使用 grunt-protractor-runner。当我运行量角器测试时,它显示已损坏。如果我在加载的数据上添加console.log(),我会看到问题。奇怪的是,我在提取对象内容时遇到了另一个问题:{ label: "a", description: "abc"} 在量角器中,当我console.log 输出代码时,我会得到一个始终等于[object Object] 的数组。显然我看到了正在发生的事情,我只是不知道为什么以及如何解决它。
  • 我想知道在它到达 Protractor 之前是否一切正常,你可以在 Gruntfile 中 console.log(grunt.file.readJSON('my/external/file.json')) 吗?它应该将结果打印到终端。我很好奇,因为您说它在您将选项移动到另一个文件之前就可以工作。
  • 很好的提示。我只是用下面的代码重新运行,它是正确的。这意味着量角器/grunt-protractor-runner grunt.registerTask('testData', function(arg){ var data = grunt.file.readJSON("sources/protractor/local/settings.json"); grunt.log.write(data.testData.length); }); 某处的问题返回 1

标签: javascript json gruntjs protractor


【解决方案1】:

正如您从 cmets 中看到的,感谢 Michael Radionov,这是基于 grunt-protractor-runner 将参数更改为命令行变量。也就是说,一切都变成了一个字符串。切线地,这个stackoverflow q&a中也提到了这一点:

How can I use command line arguments in Angularjs Protractor?

在这个 grunt-protractor-runner 问题中"

https://github.com/teerapap/grunt-protractor-runner/issues/130

你会讨厌的快速修复 - 我知道我这样做,是更改你的 json,然后在你的量角器文件中解析 json。

这个:

someObj.data = ["abc"]

变成:

someObj.data = "[\"abc\"]"

现在您只需在量角器文件中提取数据:

var myArray = JSON.parse(someObj.data);

您将获得预期的数据。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-07-31
    • 2013-01-12
    • 1970-01-01
    • 2016-02-19
    • 2023-03-20
    • 2018-10-19
    • 1970-01-01
    • 2015-01-17
    相关资源
    最近更新 更多