Swift 4 如何将自定义对象数组转换为 JSON
Posted
技术标签:
【中文标题】Swift 4 如何将自定义对象数组转换为 JSON【英文标题】:Swift 4 How to transform array of custom objects to JSON 【发布时间】:2019-07-30 09:34:54 【问题描述】:我正在构建参数以将其发送到服务器。所以我需要将我的自定义对象数组转换为 JSON。
试过这个:
let data = try? JSONSerialization.data(withJSONObject: fastForm.route, options: .prettyPrinted)
let str = String(bytes: data!, encoding: .utf8)!
从服务器获取错误为 each() 提供的无效
编辑: fastForm.route 是对象 Route 的数组 -> [Route]
struct Route: Codable
var latitude: String
var longitude: String
var waitingMinutes: String!
var description: String!
【问题讨论】:
你能说说 fastFrom.route 的类型是什么吗? 去掉属性声明中的!
,如果它们需要能够成为nil
,则使它们成为普通的可选项
@mag_zbc,确实,只有当你在课堂上拥有后期初始化属性时才可以使用IUO
(!)。否则:只使用适当的可选或非可选。
【参考方案1】:
您可以使用以下结构将 json 发送到服务器
struct Route: Codable
var latitude: String
var longitude: String
var waitingMinutes: String!
var description: String!
private enum CodingKeys: String, CodingKey
case latitude
case longitude
case waitingMinutes
case description
func encodeData() -> Data?
let routes = [Route]()
guard let data = try? JSONEncoder().encode(routes) else return nil
return data
然后您可以将编码的Data
放入您的URLRequest
中的httpBody
。
【讨论】:
正在崩溃。由于未捕获的异常“NSInvalidArgumentException”而终止应用程序,原因:“JSON 写入中的类型无效(Foundation.__NSSwiftData)”这是我的请求:Alamofire.request(url,方法:.post,参数:参数,编码:JSONEncoding.default,标头:标头).responseJSON 打印响应(响应) 这必须在 httpBody 内,因为您使用的是发布请求。你可以关注这个参考***.com/a/28552198/4816590以上是关于Swift 4 如何将自定义对象数组转换为 JSON的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 toDF() 将自定义 Java 类对象的 RDD 转换为 DataFrame?
如何在 swift 4 中的 UserDefalts 中设置自定义类数组数据