我正在用Swift 4.2编写iOS应用。
服务器抛出以下响应:
[
"A40F8EBE-7E34-126B-FFA4-ADC7A4D58300",
"https://backendlessappcontent.com/AABE5C4B-AA58-955C-FF16-27B64A185300/737368FE-4963-275B-FF3E-D909B3CCC500/files/qr_codes/9a53c126-1a67-4a71-8072-83c056db4338.png"
]
我需要解析它并采用其两个值: ID和网址。
如何实现?
答案 0 :(得分:0)
假设服务器以Data
对象的形式给您响应,则可以使用[String]
来解码JSONDecoder
:
let decoder = JSONDecoder()
if let stringArray = try? decoder.decode([String].self, from: data) {
let id = stringArray[0]
let url = stringArray[1]
}
如果您以String
的形式获得响应,则可以先通过以下方式将字符串转换为Data
:
let data = someString.data(using: .utf8)!
答案 1 :(得分:0)
假设您拥有Data
格式的json,如下所示:
let data = Data("""
[
"A40F8EBE-7E34-126B-FFA4-ADC7A4D58300",
"https://backendlessappcontent.com/AABE5C4B-AA58-955C-FF16-27B64A185300/737368FE-4963-275B-FF3E-D909B3CCC500/files/qr_codes/9a53c126-1a67-4a71-8072-83c056db4338.png"
]
""".utf8)
您需要将json解码为String
数组,然后需要将第一个元素作为id和第二个作为url。为此,您可以使用struct
Decodable
创建符合init
的{{1}}
Decoder
然后,您可以使用struct Response: Decodable {
let id, url: String
init(from decoder: Decoder) throws {
let container = try decoder.singleValueContainer()
let array = try container.decode([String].self)
id = array[0]
url = array[1]
}
}
来简单地以Data
格式解码json
JSONDecoder