Разбор вложенного массива словарей с помощью Object Mapper

Я анализирую ответ веб-API, который представляет собой массив словарей. Каждый словарь, в свою очередь, имеет вложенный массив словарей. Как мне его разобрать? Пожалуйста, предоставьте пример кода.

Мой ответ API:

(
            {
        FilingStatusId = 0;
        FormName = "MISC";
        OrderId = 0;
        RecipientList =             (
                           {
                FilingStatusId = 0;
                FormId = 1;
                FormName = "MISC";
                PayerId = 26142;
                PayerName = bsbbshs;
                RecipientId = 221438;
                RecipientName = tests;
                ReturnId = 209998;
                UserId = 0;
            },
                          {
                FilingStatusId = 0;
                FormId = 1;
                FormName = "MISC";
                PayerId = 26142;
                PayerName = bsbbshs;
                RecipientId = 221438;
                RecipientName = tests;
                ReturnId = 209998;
                UserId = 0;
            }
        );
    },
        {
        FilingStatusId = 0;
        FormName = "MISC";
        OrderId = 0;
        RecipientList =             (
                           {
                FilingStatusId = 0;
                FormId = 1;
                FormName = "MISC";
                PayerId = 26142;
                PayerName = bsbbshs;
                RecipientId = 221438;
                RecipientName = tests;
                ReturnId = 209998;
                UserId = 0;
            },
                          {
                FilingStatusId = 0;
                FormId = 1;
                FormName = "MISC";
                PayerId = 26142;
                PayerName = bsbbshs;
                RecipientId = 221438;
                RecipientName = tests;
                ReturnId = 209998;
                UserId = 0;
            }
        );
    }
);

Мой код до сих пор,

Это моя модель для всего ответа — ReturnModel

import UIKit
import ObjectMapper

class ReturnModel: Mappable
{
var FilingStatusId : Int = 0
var FormName : String = ""
var OrderId : String = ""
var RecipientList:[[String:Any]]  = [[:]]

required init?(map: Map) {

}

func mapping(map: Map)
{
    FilingStatusId <- map["FilingStatusId"]
    FormName <- map["FormName"]
    OrderId <- map["OrderId"]
    RecipientList <- map["RecipientList"]
}
}

На данный момент я анализирую RecipientList как словарь. Но у меня есть другая модель под названием RecipientModel. Как я могу использовать его внутри этой модели возврата для анализа RecipientList?


person Mano    schedule 19.01.2017    source источник


Ответы (2)


Ваша первая модель будет представлять внешний массив. А второй будет представлять внутренний массив. Вот образец

 import Foundation
 import ObjectMapper


// RecipientModel is an array itself
class RecipientModel: Mappable {

var filingStatusId:Int
var orderId: Int
var formName: String
var recipientList: [RecipientList]

required init?(_ map: Map) {

    filingStatusId = 0
    orderId = 0
    formName = ""
    recipientList = []
}

func mapping(map: Map) {

    filingStatusId      <- map["FilingStatusId"]
    orderId             <- map["OrderId"]
    formName            <- map["FormName"]
    recipientList       <- map["RecipientList"]
}
}

А теперь вы создадите еще одну модель для вашего RecipientList.

class RecipientList: Mappable {


var filingStatusId:Int
var formId: Int
var formName: String

required init?(_ map: Map) {

    filingStatusId = 0
    formId = 0
    formName = ""
}

func mapping(map: Map) {

    filingStatusId      <- map["FilingStatusId"]
    formId              <- map["FormId"]
    formName            <- map["FormName"]
}
}
person Umair Afzal    schedule 19.01.2017

Objectmapper обрабатывает вложенные объекты, если они соответствуют Mappable:

    import UIKit
    import ObjectMapper

    class ReturnModel: Mappable
    {
    var FilingStatusId : Int = 0
    var FormName : String = ""
    var OrderId : String = ""
    var RecipientList:[RecipientModel] = []

    required init?(map: Map) {

    }

    func mapping(map: Map)
    {
        FilingStatusId <- map["FilingStatusId"]
        FormName <- map["FormName"]
        OrderId <- map["OrderId"]
        RecipientList <- map["RecipientList"]
    }
    }
person Josh Homann    schedule 19.01.2017