不能#include in illustrator脚本代码

Can't #include in illustrator script code

我正在尝试阅读 JSON file,以便根据 JSON 文件中的数据对 Illustrator 文档进行更改。

我试过这段代码:

#include 'libs/json2.js';
    
function readJSONFile(file) {

  file.open("r");
  var data = file.read();
  file.close();
  data = JSON.parse(data);
  for(var i in data) {
    $.writeln(i + "=" + data[i]);
  }
}
function getCorrections()
{
  const corrections = readJSONFile(File('C:/corrections.json'));
  alert(corrections);
}

getCorrections();

但是当我 运行 Illustrator 中的脚本时,它给我一个错误提示 "JSON is undefined"

所以,我尝试使用 #import,就像我在其他 Whosebug 线程中看到的那样,但 Illustrator 似乎不接受该语法。

#include 'libs/json2.js';

我收到这个错误:

Error 23: ) does not not have a value.
Line: 1
-> ()

我很乐意在将外部库导入我的脚本时获得一些帮助,谢谢。

试试这个:

// @include 'libs/json2.js'

但实际上这两种变体都适合我。 #includes 是 Illustrator 的有效选项。

可能是你的数据有问题。如果您提供约会样本,我可以尝试解析它。

这是适合我的完整代码:

#include 'libs/json2.js';

var file = File('d:/Whosebug/jsx/json/test.json'); // <-- a full path!!!
readJSONFile(file);

function readJSONFile(file) {
    file.open("r");
    var data = file.read();
    file.close();
    data = JSON.parse(data);
    for (var i in data) {
        $.writeln(i + "=" + data[i]);
    }
}

test.json 文件:

{
    "patches": [
        {
            "patchName": "N0",
            "offsetL": "1",
            "offsetA": "-1",
            "offsetB": "2"
        },
        {
            "patchName": "N1",
            "offsetL": "1",
            "offsetA": "-1",
            "offsetB": "2"
        }
    ]
}

一切正常:

检查 json 文件的路径。

您可以通过以下方式获取包含当前脚本的文件夹:

var script_folder = File($.fileName).parent;

alert(script_folder); // 'd/Whosebug/jsx/json' in my case