swift JSON 문자열 해석 json parse/json decode

4229 단어 iOS-swift
      json     .          .    ,              .
            ,    json      .                          :
[
"http://www.example.com/uploads/7186d834f55e9bd95754b12ebe6df911.jpg",
"http://www.example.com/uploads/8bd827dae398640c198f991fe7a877bb.jpg"
]

여기 서 Swift 코드 를 사용 합 니 다.그리고 분 석 된 형식 은 String 형식 입 니 다.배열 을 사용 하려 고 했 는데 String 이 부족 해서 Array 형식 으로 바 꿀 수 없습니다.양쪽 괄호 를 제거 하고'쉼표'로 나 누 어 보 았 지만 성공 하지 못 했 습 니 다.이 럴 때 분 석 된 Stirng 을 배열 로 해석 해 야 합 니 다.
    //     ,     imageJSONStr      
     let imageJSONStr = "[
"http://www.zhuluoxi.com/uploads/7186d834f55e9bd95754b12ebe6df911.jpg",
"http://www.zhuluoxi.com/uploads/8bd827dae398640c198f991fe7a877bb.jpg"
]"  
     let images = Array() //             
        //      json  
        let data:NSData = imageJsonStr.dataUsingEncoding(NSUTF8StringEncoding)!
        var img: AnyObject? 
        do{    //  json    
            try img = NSJSONSerialization.JSONObjectWithData(data, options: .AllowFragments)
        }catch let error as NSError{
            print("error: \(error)")
        }
        images = img as! Array

ok,해결,images 는 당신 이 원 하 는 최종 배열 입 니 다.최종 버 전 으로 다시 시작 합 니 다.extension 으로 해결 하고 영원히 편안 합 니 다.사용 할 때 코드 한 마디 로 해결 합 니 다.
extension String {

    var parseJSONString: AnyObject? {
        var any: AnyObject?
        let data = self.dataUsingEncoding(NSUTF8StringEncoding, allowLossyConversion: false)
        do{
            any = try NSJSONSerialization.JSONObjectWithData(data!, options: .MutableContainers)
        }catch let error as NSError{
            print("error: \(error)")
        }
        return any
    }
}

사용 시 이렇게:
    let imageJSONStr = "[
"http://www.zhuluoxi.com/uploads/7186d834f55e9bd95754b12ebe6df911.jpg",
"http://www.zhuluoxi.com/uploads/8bd827dae398640c198f991fe7a877bb.jpg"
]"
    let images: Array = imageJSONStr.parseJSONString as! Array      

해결.코드 한 마디 로 해결 해.다른 사람 도 이 방법 을 사용 할 수 있어.
마지막 으로 작은 문제 가 있 습 니 다.위의 extension 중의 do catch 방법 에서 직접 return 할 수 없습니다.어떤 고수 가 동생 에 게 어떻게 하 는 지 가르쳐 줄 수 있 습 니 다.'any'라 는 임시 변 수 를 사용 하지 않 고 도 괄호 에서 직접 돌아 갈 수 있 습 니 다.

좋은 웹페이지 즐겨찾기