LINQ Reporting Engine supports a subset of C# language in its template syntax and mimics C# compiler behavior to some extent. For example, parsing of template syntax corresponds to compile time. On attempt to use a missing member of an object in code, a C# compiler throws an error during compile time, so does the engine. This is exactly the same behavior.
The inconvenience you mentioned comes from the JSON notation itself - it does not allow to specify which properties an item of an empty array should have. Hence, the engine cannot obtain this information and raises an alarm on attempt to use any member of such an item as the member is missing in a JSON file. For example, for a regular empty array coming from a .NET object, this situation would not appear, because type information would be still present.
To make the engine continue as usual (i.e. do not break) when encountering a reference to a missing data member, you can apply the
ReportBuildOptions.AllowMissingMembers option as I already shared.
If you worry about that some typos in template expressions can be never found then, I would suggest to use the following approach: Do not use the
ReportBuildOptions.AllowMissingMembers option (as well as empty JSON arrays) while designing and testing a template and do use the option while building an actual report.
WORDSNET-12148 is logged to support working with dynamic objects. Please check our paid support policies to find a suitable option to raise its priority. However, I am afraid that the feature is very laborious, so raising its priority will not significantly boost its implementation.