Did you read the manual on the encode/decode functions?
Both pages mention that the JSON created or decoded will be based on DS lists and DS maps and that the DS list corresponds to an array.
Multiple times and it is not at all obvious that that is what that means. It doesn't say it corresponds to an array, it says: "An ordered list of values, called a
DS List in GameMaker Studio 2 but this can also be called an "array" or "sequence"
in other programming languages." (emphasis added). Also, a ds_list is not an array and even saying that a ds_list corresponds to an array doesn't mean that they're interchangeable. Especially, since everywhere else in GameMaker they are definitely not interchangeable.
Moreover, the behavior of lists and arrays are actually different in two very important points. First, lists must actually be marked as such, but you don't need to, and in fact can't, do that with arrays. Second, that arrays get converted to lists when read back in.
I think the fact that arrays work natively in the json structure is great, especially if it is intended behavior and we can rely on it in the future. However, if it is the intended behavior, I think the manual should actually note that arrays work as well although upon importing they will be converted to a ds_list. Or something along those lines.