2016-07-12 13 views
1

Ich habe json Daten, die wie folgt aussieht:Wie man ein JSON-Wörterbuch in ObjectMapper abbildet?

{ 
    "balance": { 
    "pointsEarned": 3, 
    "pointsAvailable": 3, 
    "pointsOnHold": 0, 
    "pointsConsumed": 0, 
    "nextReward": 6 
    } 
} 

Ich versuche, die "Balance" zu kartieren, so kann ich die anderen Werte erhalten:

class AccountBalance: Mappable { 

    var balance: Dictionary<String, AnyObject>? 
    var pointsAvailable: Int? 

    required init?(_ map: Map) { 

    } 

    func mapping(map: Map) { 

    balance <- map["balance.value"] 
    pointsAvailable <- map ["pointsAvailable"] 
    } 
} 

Nach dem objectMapper github page seine done auf diese Weise:

ObjectMapper unterstützt Punktnotation innerhalb von Schlüsseln zur einfachen Zuordnung verschachtelter Objekte. Angesichts der folgenden JSON-String:

"distance" : { 
    "text" : "102 ft", 
    "value" : 31 
} 

Sie können die verschachtelten Objekte zugreifen, wie folgt:

func mapping(map: Map) { 
    distance <- map["distance.value"] 
} 

Jedes Mal, wenn ich versuche, und Zugriff auf die „Balance“ Ich habe eine Null zu bekommen. Irgendeine Idee, was ich falsch machen könnte?

Antwort

1

Hinweis im Beispiel Sie verknüpft, distance hat eine value Eigenschaft, die mit map["distance.value"] zugegriffen werden kann:

"distance" : { 
    "text" : "102 ft", 
    "value" : 31 
} 

In Ihrem Beispiel balance hat kein Unterfeld genannt value, und so wird map["balance.value"] scheitern .

Verwenden map["balance"] die balance Variable in das Wörterbuch zur Karte:

class AccountBalance: Mappable { 

    var balance: Dictionary<String, AnyObject>? 
    var pointsAvailable: Int? 

    required init?(_ map: Map) { 
    } 

    func mapping(map: Map) { 

     balance <- map["balance"] 
     pointsAvailable <- map ["pointsAvailable"] 
    } 
}