有人可以告诉我我在做什么错吗?我有一个正在通过After Effects中的脚本进行解析的json文件,但不确定如何在json文件的部分中进行迭代。
我的json文件是:
{
"Timestamp": "20-Sep-2020 12:38:07.177","m11": 0.2202,"m12": 0.8858,"m13": 0.4085,"m21": -0.9708,"m22": 0.2399,"m23": 0.0031,"m31": -0.0952,"m32": -0.3972,"m33": 0.9128,"qX": -0.13,"qY": 0.1635,"qZ": -0.6026,"qW": -0.7702
},{
"Timestamp": "20-Sep-2020 12:38:07.186","m11": 0.2204,"m12": 0.8861,"m13": 0.4078,"m22": 0.2401,"m32": -0.3965,"m33": 0.9131,"qX": -0.1297,"qY": 0.1632,"qW": -0.7703
}
我的jsx文件是这样的:
#include "json2.js"
var file = new File;
var check = 0;
var mainWindow = new Window("palette","File Reader",undefined);
mainWindow.orientatizzaaq1on = "column";
var groupOne = mainWindow.add("group",undefined,"groupOne");
groupOne.orientation = "row";
var fileLocBox = groupOne.add("edittext","Selected File Location");
fileLocBox.size = [150,20];
var getFileButton = groupOne.add("button","File...");
getFileButton.helpTip = "Select a .json file to change the comp";
var groupTwo = mainWindow.add("group","groupTwo");
groupTwo.orientation = "row";
var applyButton = groupTwo.add("button","Apply");
mainWindow.center();
mainWindow.show();
getFileButton.onClick = function() {
file = file.openDlg("Open a file","acceptable Files:*.json");
fileLocBox.text = file.fsname;
check = 1;
}
applyButton.onClick = function() {
if(check == 0) {
alert("Please select a file");
return false;
} else {
//app.beginUndoGroup("Comp Changes");
var fileExtension = fileLocBox.text;
var fileData;
if(fileExtension.substring(fileExtension.length-4,fileExtension.length) == "json") {
fileData = readJson();
changeComp(fileData);
}
alert("done");
}
}
function readJson() {
var currentLine;
var jsonStuff = [];
file.open("r");
while(!file.eof) {
currentLine = file.readln();
jsonStuff.push(currentLine);
}
file.close();
jsonStuff = jsonStuff.join("");
var parsedJson = JSON.parse(jsonStuff);
return parsedJson;
}
function changeComp(data) {
var nullz = app.project.activeItem.layers.addNull();
nullz.threeDLayer = true;
nullz.name = "parent to me";
var size = Object.keys(data).length;
for (i = 0; i < size; i++) {
var temp =data[1].m11;
var t =i/25;
nullz.xRotation.setvalueAtTime(t,temp);
}
}
我感觉我的json文件可能需要采用不同的格式,这就是它从另一个应用程序传给我的方式。
因此,想法是它将遍历json文件,获取“ m11”值,将其应用于null的旋转,然后继续进行下一帧,抓取下一个“ m11”,依此类推... 在我的脚本中,如果我只是说:
var temp =data.m11;
var t =i/25;
nullz.xRotation.setvalueAtTime(t,temp);
它起作用,它将获取第一个“ m11”的值并将其应用于空对象。 但是,如果我尝试通过说到第二个“ m11”
var temp =data[1].m11;
或
var temp =data.m11[1];
它不起作用,所以只是想弄清楚我在做什么错? 是json格式化的方式吗? json最初以[]结尾和结尾,但是将它们保留在其中会导致脚本在尝试读取文件时崩溃,如我上面所述,将其取出使它有些起作用。
还是脚本?还是两者都在猜测?