Godot Version
4.2.2
Question
I’m trying to make my code more explicitly typed when possible. This part deals with HTTP requests which return data in JSON format, but at the end of the day the minimal reproduction boils down to this test function:
func test_request() -> Array[Dictionary]:
var test_response : Array = JSON.parse_string(
'[{"key1": 1, "key2": 2},{"key1": 3, "key2": 4},{"key1": 5, "key2": 6}]'
)
#Logger.info(test_response)
return test_response
As you can see, stack trace sees the response as an array of dictionaries, but the function only recognizes it as an untyped array. I also have to mention that typing var test_response as Array isn’t the cause: if I type it as Array[Dictionary] the same error just happens earlier (I only changed that so that the value would show in stack trace); if I leave it untyped, it still ascribes the “Array” type to itself.
So, what’s the deal with the way the JSON parser works - do I have to just accept that and leave untyped arrays, or is there a way to make the function recognize those dictionaries?