Use Array instead of Dictionary as JSON root container(使用Array而不是Dictionary作为Json根容器)--Moya文档

Use Array instead of Dictionary as JSON root container(使用Array而不是Dictionary作为Json根容器)

Moya使用Dictionary作为JSON数据的根容器.但是有时候你将需要发送JSON数组作为根元素。Moya中使用.custom 编码参数

定义一个JsonArrayEncoding闭包:

var req = request.URLRequest
let JsonArrayEncodingClosure: (URLRequestConvertible, [String: Any]?) -> (URLRequest, Error?) = { request, data in
    do {
        let json = try JSONSerialization.data(withJSONObject: data!["jsonArray"]!, options: .prettyPrinted)
        req.setValue("application/json; charset=utf-8", forHTTPHeaderField: "Content-Type")
        req.httpBody = json
    } catch {
        return (req, nil)
    }
    return (req, nil)
}

配置target对象

var parameters: [String: Any]? {
    switch self {
    case .someAPI:
        return ["jsonArray": ["Yes", "What", "Abc"]]
    default:
    return nil
    }
}

var parameterEncoding: Moya.ParameterEncoding {
    switch self {
    case .someAPI:
        return ParameterEncoding.custom(JsonArrayEncodingClosure)
    default:
        return ParameterEncoding.json
    }
}

对于.someAPI端点,将会把数据作为Json 数组["Yes", "What", "Abc"]发送

总结 这小节的核心:

  1. 在request中传递json数组数据
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 135,067评论 19 139
  • Spring Boot 参考指南 介绍 转载自:https://www.gitbook.com/book/qbgb...
    毛宇鹏阅读 46,985评论 6 342
  • 文章摘自Moya官方文档 Targets Moya的使用始于定义一个target——典型的是定义一个符合Targe...
    Jt_Self阅读 16,280评论 0 27
  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 173,843评论 25 709
  • 前天回来,昨天休息一天,今天上班。 没干啥,恢复状态。 晚上补了一下,假期胖了3斤,准备恢复锻炼吧。 想要开始带饭...
    arthur503阅读 160评论 0 0