Могу ли я извлечь часть данных в строку в быстром декодируемом? - PullRequest
0 голосов
/ 29 июня 2018

Например

{

{
  "data": {
    "number": 1,
    "person": {
      "name": "Jason"
      "age" : 18
    }
  }
}

я хочу получить данные "персона" в виде строки так что ниже я хочу сделать

число = 1

человек = " { "имя": "Джейсон", "возраст": 18 } «

что я могу сделать, пожалуйста, помогите мне

  • добавить

я хочу получить вот так

public struct temp: Decodable {
  public let number: Int
  public let person: String
  
  enum CodingKeys: String, CodingKey {
    case number, person
  }
  
  public init(from decoder: Decoder) throws {
    let container = try decoder.container(keyedBy: CodingKeys.self)
    
    number = try container.decode(Int.self, forKey: .number)
    
    ////
    Here is code i want to get string of json 
    ////
    
    }
  }
}

как получить строку json из данных в декодируемой структуре

1 Ответ

0 голосов
/ 29 июня 2018

Попробуйте это ....

Если вы хотите получить ответ в строке, попробуйте это ...

let task = URLSession.shared.dataTask(with: request) { data, response, error in guard let data = data, error == nil else { 
print("error=\(String(describing: error))")
    return
}

        if let httpStatus = response as? HTTPURLResponse, httpStatus.statusCode != 200 { // check for http errors
            print("statusCode should be 200, but is \(httpStatus.statusCode)")
            print("response = \(String(describing: response))")
        }

        //Here you can convert your response into string...
        let responseString = String(data: data, encoding: .utf8)//Response in String formate
        let dictionary = data
        print("dictionary = \(dictionary)")
        print("responseString = \(String(describing: responseString!))")//I think this is your required string....

        do {
            let response = try JSONSerialization.jsonObject(with: data, options: []) as? [String: AnyObject]
            print(response!)

            //Here you write your json code
            let response2 = [ "data": ["number": 1,"person": ["name": "Jason", "age" : 18]]]

            let data  = response2["data"]
            print(data!) // Output : ["number": 1,"person": ["name": "Jason", "age" : 18]]
            let number = data!["number"]
            print(number!) // Output : 1
            let person = data!["person"]
            print(person!)// Output : ["name": "Jason", "age" : 18]


            //If you want to print name and age 

            let person = data!["person"] as! Dictionary<String,Any>
            print(person)// Output : ["name": "Jason", "age" : 18]
            let name = person["name"]
            print(name!)
            let age = person["age"]
            print(age!)


       } catch let error as NSError {
            print(error)
        }

}
...