Is it because of convenience?
Sort of designer's decision. Some JSON frameoworks uses dedicated types to represent JSON items, such as `JSONString`, `JSONNumber`, `JSONArray` or `JSONObject` (or a generic single `JSON` type), and some others maps JSON items to some existing types, such as `List<Object>` for JSON array or `Map<String, Object>` for JSON object. In Java, there are so many JSON frameworks that you may find both designs.
In Alamofire when using `responseJSON`, the latter is used. In fact, it uses an old `JSONSerialization`, written for Objective-C.
Recently, you have another option to work with JSON in Swift, so called `Codable`. Anyway, you may need to show more context to get a concrete description on how to handle NSDictionary or NSArray, or how to handle your JSON response using `Codable`.
Please do not hesitate to start a new thread to find such solutions, including as much examples and your code would be better.