The issue is inside "JSON text to Variant.vi". Here's a minimal example:
There are explicit cases to handle most common types including numerics and strings, but there is no explicit case for booleans
Therefore, booleans revert to the Default case:
The bug arises because a 1D array of variants is coerced back to a variant at the output of the error structure (see the red arrow in the image above). When that wire is auto-indexed at the output of the next FOR loop we end up with a "1D array of 1D arrays of variants", rather than a "2D array of variants" as we should. (These are not the same thing!)
The solution for the Default case is simple: Add a "build array" to the No Error case to avoid the coercion. Then we correctly get a 2D array of variants at the output.
An additional improvement is to include a specific handler for boolean arrays, as per the integer case. It requires implementations for 1D, 2D and 3D. This is much more performant than the Default handler!