There are 2 problems with your example.
First: You are saving the json data as an array but trying to deserialize as an object:
var file = new File([data], "inputParameters.json", {
type: "application/json"
});
This explains the error you have:
Exception when parsing json file: Newtonsoft.Json.JsonSerializationException: Cannot deserialize the current JSON array (e.g. [1,2,3]) into type 'ProjectSchedule.InputCache' because the type requires a JSON object (e.g. {"name":"value"}) to deserialize correctly.
To fix this, you can change your js code to not convert your data into an array or account for an array in your appbundle code.
A possible solution in js code:
var file = new File([JSON.stringify(data)], "inputParameters.json", {
type: "text/plain"
});
Or change in appbundle code (removes the redundant square brackets):
string fileContents = File.ReadAllText("cache.json");
string jsonContents = fileContents.Substring(1, fileContents.Length-2);
var inputCache = JsonConvert.DeserializeObject<List<InputCache>>(jsonContents);
The second problem that you have not yet encountered with deserialization is explained in an earlier answer.