美文网首页
Use Array instead of Dictionary

Use Array instead of Dictionary

作者: 心印印心 | 来源:发表于2017-06-29 21:07 被阅读0次

    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数组数据

    相关文章

      网友评论

          本文标题:Use Array instead of Dictionary

          本文链接:https://www.haomeiwen.com/subject/jspvcxtx.html