programing

SwiftyJSON을 사용하여 JSON을 루프하는 방법

i4 2023. 3. 12. 10:26
반응형

SwiftyJSON을 사용하여 JSON을 루프하는 방법

난 스위프티J와 함께 해석할 수 있는 아들이 있어손:

if let title = json["items"][2]["title"].string {
     println("title : \(title)")
}

완벽하게 동작합니다.

하지만 나는 그것을 통과할 수 없었다.두 가지 방법을 시도했는데 첫 번째 방법은

// TUTO :
//If json is .Dictionary
for (key: String, subJson: JSON) in json {
    ...
}
// WHAT I DID :
for (key: "title", subJson: json["items"]) in json {
    ...
}

XCode가 for 루프 선언을 받아들이지 않았습니다.

두 번째 방법은 다음과 같습니다.

// TUTO :
if let appArray = json["feed"]["entry"].arrayValue {
     ...
}
// WHAT I DID :
if let tab = json["items"].arrayValue {
     ...
}

XCode가 if 문을 받아들이지 않았습니다.

내가 뭘 잘못하고 있지?

루프를 통과하려면json["items"]어레이, 시행:

for (key, subJson) in json["items"] {
    if let title = subJson["title"].string {
        println(title)
    }
}

두 번째 방법은.arrayValuenon을 반환하다 Optional어레이를 사용합니다..array대신:

if let items = json["items"].array {
    for item in items {
        if let title = item["title"].string {
            println(title)
        }
    }
}

실제로 다음을 사용하고 있기 때문에 조금 이상하다고 생각합니다.

for (key: String, subJson: JSON) in json {
   //Do something you want
}

에 구문 오류가 표시됩니다(Swift 2.0 이상).

정답:

for (key, subJson) in json {
//Do something you want
}

여기서 키는 문자열이고 subJson은 JSON 객체입니다.

조금 다른 예를 들어 보겠습니다.

//jsonResult from API request,JSON result from Alamofire
   if let jsonArray = jsonResult?.array
    {
        //it is an array, each array contains a dictionary
        for item in jsonArray
        {
            if let jsonDict = item.dictionary //jsonDict : [String : JSON]?
            {
                //loop through all objects in this jsonDictionary
                let postId = jsonDict!["postId"]!.intValue
                let text = jsonDict!["text"]!.stringValue
                //...etc. ...create post object..etc.
                if(post != nil)
                {
                    posts.append(post!)
                }
            }
        }
   }

for 루프에서 다음 유형의key그런 타입일 수 없다"title".부터"title"는 문자열입니다.다음으로 넘어갑니다.key:String그 후, Inside the Loop은 특별히 사용할 수 있습니다."title"필요할 때.그리고 또 다른 타입은subJson그래야만 한다.JSON.

JSON 파일은 2D 어레이로 간주할 수 있기 때문에json["items'].arrayValue는 여러 개체를 반환합니다.다음을 사용하는 것이 좋습니다.if let title = json["items"][2].arrayValue.

https://developer.apple.com/library/ios/documentation/Swift/Conceptual/Swift_Programming_Language/Types.html 를 참조해 주세요.

README 를 확인해 주세요.

//If json is .Dictionary
for (key: String, subJson: JSON) in json {
   //Do something you want
}

//If json is .Array
//The `index` is 0..<json.count's string value
for (index: String, subJson: JSON) in json {
    //Do something you want
}

다음을 통해 json을 반복할 수 있습니다.

for (_,subJson):(String, JSON) in json {

   var title = subJson["items"]["2"]["title"].stringValue

   print(title)

}

SwiftyJ의 문서를 보다SON. https://github.com/SwiftyJSON/SwiftyJSON 에서 문서의 "Loop" 섹션을 참조합니다.

언급URL : https://stackoverflow.com/questions/28365939/how-to-loop-through-json-with-swiftyjson

반응형