Как получить значение из массива JSON в Swift4

Должно быть возможным изменить настройку переменной среды JAVA_HOME по-разному для определенных приложений.

При запуске из командной строки или из пакетного скрипта вы можете использовать set JAVA_HOME=C:\...\j2dskXXX для изменения среды JAVA_HOME.

Возможно, вам также необходимо изменить PATH для использования правильного двоичного кода Java. Для этого вы можете использовать set PATH=%JAVA_HOME%\bin;%PATH%.

0
задан Sudheer Kolasani 5 March 2019 в 13:34
поделиться

4 ответа

Вам нужно

 do {

     let json = try JSONSerialization.jsonObject(with: data!, options: []) as! [String:[String]]
      let arr1 = json["Categories"]!
      let str1 =  arr1.joined(separator: ":")
       print(str1)
     // or 
      let decoded = try JSONDecoder().decode(Root.self, from: data)
       let str =  decoded.categories.joined(separator: ":")
       print(str)

 } catch {
     print(error)
 }

или использовать

struct Root: Codable {
    let categories: [String] 
    enum CodingKeys: String, CodingKey {
        case categories = "Categories"
    }
}
0
ответ дан Sh_Khan 5 March 2019 в 13:34
поделиться

Облегчи свою жизнь с Codable. Сначала создайте собственную модель для вашего ответа

struct Response: Decodable {

    let categories: [String]

    enum CodingKeys: String, CodingKey {
        case categories = "Categories"
    }
}

Затем декодируйте ваш data, который вы получите, используя JSONDecoder

if let data = data {
    do {
        let decoded = try JSONDecoder().decode(Response.self, from: data)
        let string = decoded.categories.joined(separator: ", ") // if u need to join 
                                                                // your array to 
                                                                // single `String`
        print(string)
    } catch { print(error) }
}
0
ответ дан Robert Dresler 5 March 2019 в 13:34
поделиться
//Model Class should be like this
struct JsonResposne : Codable {

    let categories : [String]?

    enum CodingKeys: String, CodingKey {
            case categories = "Categories"
    }

    init(from decoder: Decoder) throws {
            let values = try decoder.container(keyedBy: CodingKeys.self)
            categories = try values.decodeIfPresent([String].self, forKey: .categories)
    }

}

func getCategoriesResponse() {

Alamofire.request(requestUrl, method: .post, parameters: params, encoding: URLEncoding.default).responseJSON { (response) in
        switch response.result {
        case .success:
            if response.data != nil {
                do {
        let decoder = JSONDecoder()
        let apiResponse:JsonResponse = try decoder.decode(JsonResponse.self, from: responseData)
        print(apiResponse.categories.count)

    }catch {
        print(error.localizedDescription)
    }
                }
            }
            break
        case .failure:
            print("There was something with your call")
            break
        }
    }

}

0
ответ дан Sid Shehxad 5 March 2019 в 13:34
поделиться

Использовать встроенную быструю поддержку для декодирования JSON в соответствии с Decodable, а также в соответствии с CustomStringConvertible, чтобы получить строковое представление значений

struct Item: Decodable, CustomStringConvertible {
    let categories: [String]

    enum CodingKeys: String, CodingKey {
        case categories = "Categories"
    }

    public var description: String {
        return categories.joined(separator: " ")
    }
}

let decoder = JSONDecoder()
do {
    let result = try decoder.decode(Item.self, from: data)
    let descr = result.description
    print(descr)
} catch {
    print(error)
}
0
ответ дан Joakim Danielson 5 March 2019 в 13:34
поделиться
Другие вопросы по тегам:

Похожие вопросы: