【问题标题】:ObjectMapper toJSON() swiftObjectMapper toJSON() 快速
【发布时间】:2019-04-28 06:35:24
【问题描述】:

我有一个对象,它在 init func 中有一些属性,在将数据从 JSON 解析到对象时,它做得很好,但是在将对象转换为 JSON 时,我找不到将数据转换为 JSON 的方法

以下是我正在使用的代码

var sOWSubCategory: SowSubCategoryModel?
var reportDisplayId : String?

required init?(map: Map){
        sOWSubCategory = SowSubCategoryModel(sOWSubCategoryID: map.JSON["SOWSubCategoryID"] as? Int, sOWSubCategoryNameAr: map.JSON["SOWSubCategoryNameAr"] as? String, sOWSubCategoryNameEn: map.JSON["SOWSubCategoryNameEn"] as? String)
        sOWSubCategoryDetail = SowSubCategoryDetailListModel(sOWSubCategoryDetailID: map.JSON["SOWSubCategoryDetailID"] as? Int64, sOWSubCategoryDetailAr: map.JSON["SOWSubCategoryDetailNameAr"] as? String, sOWSubCategoryDetailEn: map.JSON["SOWSubCategoryDetailNameEn"] as? String)
    }
func mapping(map: Map) {
    reportDisplayId <- map["ReportDisplayID"]   
}

reportDisplayId 正在转换为 JSON,但 sOWSubCategory 和 sOWSubCategoryDe​​tail 没有

【问题讨论】:

    标签: swift xcode objectmapper


    【解决方案1】:

    ObjectMapper 将map 从/到下面mapping(map: Map) 方法中使用的对象属性

    func mapping(map: Map) {
        reportDisplayId <- map["ReportDisplayID"]   
    }
    

    由于reportDisplayId 是在mapping(map: Map) 方法中映射的唯一属性,因此您只能通过此键值获得JSON。您应该将SowSubCategoryModel 和SowSubCategoryDetailListModel 与Mappable 一致,并通过mapping 方法映射这些对象,以便您获得所需的JSON。


    如果您想保持SowSubCategoryModel 和SowSubCategoryDetailListModel 的映射与所讨论的相同,那么您可以通过添加sOWSubCategory 和sOWSubCategoryDetail JSON 在您的模型中实现toJSON 方法,如下所示,

    func toJSON() -> [String : Any] {
        var finalJSON = self.toJSON()
    
    
        var sOWSubCategory = sOWSubCategory.toJSON()
        var sOWSubCategoryDetail = sOWSubCategoryDetail.toJSON()
    
        sOWSubCategory.forEach {
            finalJSON[$0.0] = $0.1
        }
    
        sOWSubCategoryDetail.forEach {
            finalJSON[$0.0] = $0.1
        }
    
        return finalJSON
    }
    

    【讨论】:

    • 我已经添加了 toJSON() 方法,但是这不会被调用,由于某些限制,我不能将 SowSubCategoryModel 用作可映射
    • 如果您不能使SowSubCategoryModel 符合可映射,那么您将无法获得自动转换的 JSON。剩下的就是手动创建,就像初始化这个对象一样。
    猜你喜欢
    • 2017-09-27
    • 1970-01-01
    • 1970-01-01
    • 2015-12-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多