序列化异源阵列
Posted
技术标签:
【中文标题】序列化异源阵列【英文标题】:Serialize heterogenic array 【发布时间】:2019-12-06 18:41:36 【问题描述】:我有一个以下 JSON 字符串,我需要对其进行序列化并在 POST 请求中作为正文发送。
"rules": [[
"operator": "text_field_contains",
"args": [
"8",
"test"
]
],
[
"operator": "text_field_contains",
"args": [
"6",
"test"
]
],
"operator": "status_any",
"args": []
]
我在将其转换为 Swift 对象时遇到问题。如您所见,rules
属性包含带有[Rule]
或Rule
对象的异构数组,其结构如下:
struct Rule: Codable, Equatable
let rOperator: String
let args: [String]?
enum CodingKeys : String, CodingKey
case rOperator = "operator"
case args
init(ruleOperator: String, args: [String]? = nil)
self.rOperator = ruleOperator
self.args = args
如何将上面的JSON转换成Data?
【问题讨论】:
如果您手头已有该字符串,则不需要codable
。只需将其转换为 data
并设置您的请求正文。
你说得对,我完全错过了
【参考方案1】:
如果你有以下 JSON String
,
let str = """
"rules":[["operator":"text_field_contains","args":["8","test"]],["operator":"text_field_contains","args":["6","test"]],"operator":"status_any","args":[]]
"""
只需使用data(using:)
将String
转换为Data
喜欢,
if let data = str.data(using: .utf8)
//use data here....
【讨论】:
还有一个更简单的方法:let data = Data(str.utf8)
,它返回一个非可选的。以上是关于序列化异源阵列的主要内容,如果未能解决你的问题,请参考以下文章
RAID-5磁盘阵列 序列号无法读取 在SAS扩展卡上硬盘无法识别