如何通过 objectMapper 和 Alamofire 发布嵌套的 json?

Posted

技术标签:

【中文标题】如何通过 objectMapper 和 Alamofire 发布嵌套的 json?【英文标题】:How to post nested json by objectMapper and Alamofire? 【发布时间】:2018-05-15 12:43:05 【问题描述】:

我有 post API 的请求 json :

"TokenId": "xxxxxx-xxxxx-xxxx-xxx", 
"ObjSearch": 
  

     "UserId":"0",
     "FromDate":"",
     "StateId":"0",
     "DistrictId":"0",
     "ToDate":""
  

目前我已经创建了两个请求模型,例如:

class  ChartsReqModel: NSObject, Mappable 
  var TokenId:String?
  var ObjSearch : [ChartObjSearchReqModel]?

class  ChartObjSearchReqModel: NSObject,Mappable 
var FromDate:String?
var ToDate:String?
var StateId:String?
var DistrictId:String?
var UserId:String?
var ProductId:String?
var SalesChannelId:String?
var ReporteesId:String?
var `Type`:String?

func mapping(map: Map) 
    FromDate <- map["FromDate"];
    ToDate <- map["ToDate"];
    StateId <- map["StateId"];
    DistrictId <- map["DistrictId"];
    UserId <- map["UserId"];
    ProductId <- map["ProductId"];
    SalesChannelId <- map["SalesChannelId"];
    ReporteesId <- map["ReporteesId"];
    Type <- map[![\[][1]][1]"Type"];


我从邮递员的 API 获得的期望响应看起来很完美,但我认为从我的代码中我无法发送正确的请求模型和我的数据显示

数据 = ( );

我是 Swift 的新手,我无法找出代码中的问题.. 请有人帮我找到解决方案

邮递员截图:

【问题讨论】:

这里没有足够的信息给我们 Tanya,我们需要看看你想提出什么要求。也许是邮递员截图?你有什么代码来创建请求?尝试打印请求的正文,看看你得到了什么。 @Scriptable 请查看我更新后的问题以获取屏幕截图 【参考方案1】:

基于请求结构,下面是编码/解码ChartsReqModel对象的简化方式,

class  ChartsReqModel: NSObject, Mappable 
  var TokenId:String?
  var ObjSearch: ChartObjSearchReqModel?

  required init?(map: Map) 

  func mapping(map: Map) 
      self.TokenId    <- map["TokenId"]
      self.ObjSearch  <- map["ObjSearch"]
  

现在,当您从响应中获得 json 时,您可以通过如下传递该 json 来解码 ChartsReqModel 对象,

let chartsObject = ChartsReqModel(JSON: jsonFromResponse)

当你想发布ChartsReqModel json,你可以编码如下

let paramsJson = chartsObject.toJSON()

【讨论】:

您建议如何将 ChartObjSearchReqModel 的值传递给 ChartsReqModel? 没有得到传递值的意义?在 json 中,您将其作为对象,即 ObjSearch,因此,一旦您传递 json,ObjectMapper 将映射它。 @TanyaSinha 很高兴它有帮助! @Kamran 文档中哪里提到了这个?太令人沮丧了。 +1 @T.Coutlakis 你是对的,他们没有在文档中为此提供任何具体示例。您只能在 BaseMappable 类中找到它。

以上是关于如何通过 objectMapper 和 Alamofire 发布嵌套的 json?的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 ObjectMapper 和 Realm 对象声明字典

理解 Realm、Moya 和 ObjectMapper

如何使用 ObjectMapper 将枚举的 rawValue 分配给变量?

在 swift 3 中下载文件时,alamo fire 中的进度视图不会更新

ObjectMapper 的目标是啥?

ObjectMapper 的目标是啥?