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 和 sOWSubCategoryDetail 没有
【问题讨论】:
【参考方案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。剩下的就是手动创建,就像初始化这个对象一样。以上是关于ObjectMapper toJSON() 快速的主要内容,如果未能解决你的问题,请参考以下文章
我的 Userdefault 没有保存数据,也没有被 ObjectMapper 快速映射
ObjectMapper SerializerCache 的单个实例中的对象过多导致内存泄漏
RepositoryRestMvcConfiguration 的 ObjectMapper 与 Spring Boot 默认的 ObjectMapper?