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'라 는 임시 변 수 를 사용 하지 않 고 도 괄호 에서 직접 돌아 갈 수 있 습 니 다.