将字符串解析为字符串数组

时间:2019-05-01 10:15:23

标签: swift

我正在用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和网址。

如何实现?

2 个答案:

答案 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