Wie wird SwiftyJSON für verschachtelte JSON-Werte verwendet?
Ich rufe eine JSON-API auf, die mehrere verschachtelte Werte enthält, die ich abrufen muss. Ich benutze SwiftyJSON, um die Dinge ein wenig sauberer zu machen. Bei den Werten der obersten Ebene scheint alles in Ordnung zu sein, aber bei etwas tieferem erhalte ich das gefürchtete "Null beim Auspacken des optionalen Werts".
Hier mache ich den API-Aufruf mit Alamofire:
Alamofire.request(APIRequests.Router.Nearby(self.page)).responseJSON(){
(_,_,json,_) in
println(json)
if (json != nil){
var jsonObj = JSON(json!)
if let userArray = jsonObj ["results"].array {
for userDict in userArray {
var username: String! = userDict["username"].string
var firstName: String! = userDict["firstName"].string
var profileImage: String! = userDict["userImages"]["profile"]["filename"].string
var characterName: String! = userDict["characters"]["characterName"].string
var user = User(username: username, profileImage: profileImage, firstName: firstName, characterName: characterName)
self.users.append(user)
}
}
Hier ist ein Beispiel für den JSON:
{
userInfo: {
something: "abc",
requestType: "GET"
},
results: [
{
username: "Jess",
firstName: "Jessica",
userImages: {
profile: [
{
userImageID: "6",
filename: "user-07.jpg"
}
],
cover: [
{
userImageID: "15",
filename: "user-07.jpg"
}
]
},
characters: [
{
userCharacterID: "8",
characterName: "Amelia",
}
]
}
Für die Tasten der obersten Ebeneusername
undfirstName
Der Debugger zeigt jedoch die korrekten Werte an, sobald ich etwas tiefer tauche, um @ zu bekommeprofileImage
odercharacterName
Diese werden als Null zurückgegeben, obwohl beim Drucken des JSON-Codes Werte für diese Schlüssel angezeigt werden.
Was mache ich falsch? Ich sehe es einfach nicht.
Irgendwelche Gedanken wären hilfreich. Vielen Dank