Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 将JSON映射到模型,而不考虑数组或Object-ObjectMapper_Ios_Swift_Objectmapper - Fatal编程技术网

Ios 将JSON映射到模型,而不考虑数组或Object-ObjectMapper

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

我在将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","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
是否成功,如果不成功,则将城市作为单个字典进行解析。