Ios 将JSON映射到模型,而不考虑数组或Object-ObjectMapper
我在将JSON映射到我的对象类时遇到问题。这是我的模型对象Ios 将JSON映射到模型,而不考虑数组或Object-ObjectMapper,ios,swift,objectmapper,Ios,Swift,Objectmapper,我在将JSON映射到我的对象类时遇到问题。这是我的模型对象 class CityObject : NSObject, Mappable{ var id : String? var name : String? required init?(map: Map) { } func mapping(map: Map) { id <- map["id"] name <- map["name"] } } 有时候我会这样 { "cities": {"id": "6","na
class CityObject : NSObject, Mappable{
var id : String?
var name : String?
required init?(map: Map) {
}
func mapping(map: Map) {
id <- map["id"]
name <- map["name"]
}
}
有时候我会这样
{
"cities": {"id": "6","name": "Hyderabad"}
}
let list = Mapper<CityObject>().mapArray(JSONObject:cities["cities"])
它给我的不是JSONArray,而是JSONObject
我像这样映射到我的类
{
"cities": {"id": "6","name": "Hyderabad"}
}
let list = Mapper<CityObject>().mapArray(JSONObject:cities["cities"])
let list=Mapper().mapArray(JSONObject:cities[“cities”])
当我得到JSONArray时,这非常有效,但是当我得到JSONObject时,这不起作用
如何使用ObjectMapper处理这两个问题?根据Paulw11的建议,向下转换到MAP对我很有效
if let list = Mapper<CityObject>().mapArray(JSONObject:cities["cities"]){
//Handles JSONArray response
}
else if let list = Mapper<CityObject>().map(JSONObject: cities["cities"]){
//Handles JSONObject response
}
else{
//Handles error
}
如果let list=Mapper().mapArray(JSONObject:cities[“cities”]){
//处理JSONArray响应
}
如果let list=Mapper().map(JSONObject:cities[“cities”]),则为else{
//处理JSONObject响应
}
否则{
//处理错误
}
修复您的服务器。它应该提供一致的模式。否则,您将需要有条件地向下转换到数组,如果失败,则映射到字典。由于服务器也从第三方获得此响应,目前无法在服务器端进行修复,您能否提供一个小代码段,以便在我的端有一个检查程序?@Neo即使您的服务器从第三方接收数据,在将其发送到应用程序之前,您可以检查服务器端是否接收到字典数组或单个字典,如果它是单个字典,请将其包装在数组中,以便在这种情况下,您的应用程序接收单个字典数组。或者,如果您确实无法在服务器端更改任何内容,只需检查mapArray
是否成功,如果不成功,则将城市作为单个字典进行解析。