代码之家  ›  专栏  ›  技术社区  ›  Naveen T P

将JSON映射到模型,而不考虑数组或对象映射器

  •  2
  • Naveen T P  · 技术社区  · 7 年前

    class CityObject : NSObject, Mappable{
    var id : String?
    var name : String?
    
    required init?(map: Map) {
    }
    
    func mapping(map: Map) {
        id <- map["id"]
        name <- map["name"]
    }
    }
    

    我有时从服务器获得的JSON响应可能是数组或类似这样的对象。

    阵列:

    {
    "cities": [
    {
      "id": "190",
      "name": "Elurupadu"
    },
    {
      "id": "1230",
      "name": "Sendhwa"
    },
    {
      "id": "1262",
      "name": "Multai"
    },
    {
      "id": "1480",
      "name": "Kherwara"
    }]
    }
    

    有时我会这样,

    {
    "cities": {"id": "6","name": "Hyderabad"}
    }
    

    它给我的不是JSONArray,而是JSONObject。

    let list = Mapper<CityObject>().mapArray(JSONObject:cities["cities"])
    

    当我得到JSONArray时,这非常有效,但当我得到JSONObject时,这不起作用。

    1 回复  |  直到 7 年前
        1
  •  2
  •   Naveen T P    7 年前

    根据Paulw11的建议,对地图的向下投射对我有效。

    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
    }