Simple and clean way to convert JSON string to Object in Swift

前端 未结 16 1186
挽巷
挽巷 2020-11-28 23:27

I have been searching for days to convert a fairly simple JSON string to an object type in Swift but with no avail.

Here is the code for web service call:



        
16条回答
  •  清酒与你
    2020-11-28 23:56

    As simple String extension should suffice:

    extension String {
    
        var parseJSONString: AnyObject? {
    
            let data = self.dataUsingEncoding(NSUTF8StringEncoding, allowLossyConversion: false)
    
            if let jsonData = data {
                // Will return an object or nil if JSON decoding fails
                return NSJSONSerialization.JSONObjectWithData(jsonData, options: NSJSONReadingOptions.MutableContainers, error: nil)
            } else {
                // Lossless conversion of the string was not possible
                return nil
            }
        }
    }
    

    Then:

    var jsonString = "[\n" +
        "{\n" +
        "\"id\":72,\n" +
        "\"name\":\"Batata Cremosa\",\n" +            
        "},\n" +
        "{\n" +
        "\"id\":183,\n" +
        "\"name\":\"Caldeirada de Peixes\",\n" +            
        "},\n" +
        "{\n" +
        "\"id\":76,\n" +
        "\"name\":\"Batata com Cebola e Ervas\",\n" +            
        "},\n" +
        "{\n" +
        "\"id\":56,\n" +
        "\"name\":\"Arroz de forma\",\n" +            
    "}]"
    
    let json: AnyObject? = jsonString.parseJSONString
    println("Parsed JSON: \(json!)")
    println("json[3]: \(json![3])")
    
    /* Output:
    
    Parsed JSON: (
        {
        id = 72;
        name = "Batata Cremosa";
        },
        {
        id = 183;
        name = "Caldeirada de Peixes";
        },
        {
        id = 76;
        name = "Batata com Cebola e Ervas";
        },
        {
        id = 56;
        name = "Arroz de forma";
        }
    )
    
    json[3]: {
        id = 56;
        name = "Arroz de forma";
    }
    */
    

提交回复
热议问题