Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Swift 如何将json转换为字符串数组_Swift_Swifty Json - Fatal编程技术网

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

Swift 如何将json转换为字符串数组,swift,swifty-json,Swift,Swifty Json,嗨,我是Swift的新手,我正在尝试做一个简单的应用程序 应用程序以JSON格式从服务器获取数据 func addLangList(completion: @escaping ([String], [String]) -> Void) { let request = NetworkRequest() let reqUrl = NetworkInformation.serverAddr + "/word/purpose" let parameters: Parame

嗨,我是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”以在调用者中进行进一步处理。“完成(语言,目的)”时出错。Xcode说

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

我猜,这个错误是因为
.arrayValue
没有将
resultMessage[“lang”]
更改为
[String]
类型……有人能给我一些建议吗???

这两个数组

let lang = resultMessage["lang"].array
let purpose = resultMessage["purpose"].array
类型为
JSON
,而不是
String
,您需要强制转换它们

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

如果他们解释问题和解决方案,而不是只发布代码,那么答案(对问题的作者和本帖的未来读者)会更有帮助。好的。。在这个答案中,我们将json中的字符串(根据需求)值映射为变量的赋值。请参阅下面的链接:。评论澄清了答案,属于答案,而不是评论。此外,您只重新键入了在此帖子之前发布的答案的内容。
let langStr = lang.map { $0.string }
let purposeStr = purpose.map { $0.string }