ObjectMapper toJSON() 快速

Posted

技术标签:

【中文标题】ObjectMapper toJSON() 快速【英文标题】:ObjectMapper toJSON() swift 【发布时间】: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 没有

【问题讨论】:

【参考方案1】:

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

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

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


如果您想保持SowSubCategoryModelSowSubCategoryDetailListModel 的映射与所讨论的相同,那么您可以通过添加sOWSubCategorysOWSubCategoryDetail 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。剩下的就是手动创建,就像初始化这个对象一样。

以上是关于ObjectMapper toJSON() 快速的主要内容,如果未能解决你的问题,请参考以下文章

我的 Userdefault 没有保存数据,也没有被 ObjectMapper 快速映射

ObjectMapper SerializerCache 的单个实例中的对象过多导致内存泄漏

JSON 到 Objective-C 中的模型映射

RepositoryRestMvcConfiguration 的 ObjectMapper 与 Spring Boot 默认的 ObjectMapper?

gson.toJson() 抛出 ***Error

ObjectMapper 的两个实例