简体   繁体   中英

How to parse Json response in Swift

I need to parse out "choices" and save 123347 and save "option" to a string from the following String:

{
"type" : "radiobuttons",
"patient" : false,
"text" : "How are you today",
"id" : 63339,
"position" : 2,


"options" : "123344:ok today;123345:see you tomorrow;123346:call friend;123347:call lisa;",


"required" : true,




"choices" : {
"123347" : {
  "value" : 3,
  "option" : "iOS"
},

"123345" : {
  "option" : "Android",
  "value" : 1
},
"123346" : {
  "option" : "Windows",
  "value" : 2
},
"123344" : {
  "option" : "MAC",
  "value" : 0
}
}
}






let json = try? JSONSerialization.jsonObject(with: str, options: [])

Swift 5

Try to serialize and decode it

let jsonResponse = try JSONSerialization.data(withJSONObject: responseObject as Any, options: JSONSerialization.WritingOptions.sortedKeys)
let customObject = try JSONDecoder().decode(CustomObject.self, from: jsonResponse)
guard let requiredChoice = customObject.choices["123347"] else{
  return
}
 let option = requiredChoice.option
 print(option)

CustomObject for your json:

struct CustomObject: Codable {
    let type: String
    let patient: Bool
    let text: String
    let id, position: Int
    let options: String
    let customObjectRequired: Bool
    let choices: [String: Choice]

    enum CodingKeys: String, CodingKey {
        case type, patient, text, id, position, options
        case customObjectRequired = "required"
        case choices
    }
}

struct Choice: Codable {
    let option: String
    let value: Int
}

There are many tools available to easily create struct/class for your json: Eg: https://app.quicktype.io

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM