如何将json转换为字符串数组

时间:2019-09-01 11:50:51

标签: swift swifty-json

嗨,我是Swift的新手,我正在尝试制作一个简单的应用程序。

该应用程序以JSON格式从服务器获取数据。

func addLangList(completion: @escaping ([String], [String]) -> Void) {

    let request = NetworkRequest()
    let reqUrl = NetworkInformation.serverAddr + "/word/purpose"
    let parameters: Parameters = ["category": "lang"]
    request.sendGetRequest(url: reqUrl, parameters: parameters, success: { (response) in

        let json = JSON(response)
        let isSuccess = json[ServerResponseKey.KEY_RESULT]


        if isSuccess == true {

            var resultMessage:JSON = json[ServerResponseKey.KEY_MESSAGE]

            let lang = resultMessage["lang"].arrayValue
            let purpose = resultMessage["purpose"].arrayValue


            completion(lang, purpose)
        }

    }, fail: request.CommonNetworkFailureHandler)
}

通过使用Swiftyjson,该函数将接收到的数据转换为JSON格式。在闭包内部,调用者将调用“ completion”以进行进一步处理。在“ completion(语言,用途)”处发生错误。 Xcode说

  

“无法将类型'[JSON]'的值转换为预期的参数类型'[String]'”。

我猜是错误的,因为.arrayValue不会将resultMessage["lang"]更改为[String]类型。...有人可以给我一些建议吗?

2 个答案:

答案 0 :(得分:2)

那2个数组

let lang = resultMessage["lang"].array
let purpose = resultMessage["purpose"].array

类型为JSON而不是String的类型,您需要将其强制转换

let langStr = lang.map { $0.string }
let purposeStr = purpose.map { $0.string }

答案 1 :(得分:1)

let langStr = lang.map { $0.string }
let purposeStr = purpose.map { $0.string }