Frage

Wir verwenden AFNetworking in unserer mobilen App und oft kommt JSON zurück, das für einige Werte null hat.

Ich bin es leid, Folgendes zu tun.

if ([json objectForKey:@"nickname"] isKindOfClass:[NSNull class]]) {
    nickname = nil;
} else {
    nickname = [json objectForKey:@"nickname"];
}

Können wir irgendetwas tun, damit AFNetworking Objekte automatisch auf Null oder Zahlen auf 0 setzt, wenn der Wert in der JSON-Antwort null ist?

War es hilfreich?

Lösung

Es ist nicht wirklich möglich, da das Wörterbuch nicht enthalten kann nil als Objekt für einen Schlüssel.Der Schlüssel müsste vollständig weggelassen werden, um das gewünschte Verhalten zu erzielen, was auf seine Weise unerwünscht wäre.

Angenommen, Sie hatten keine Kontrolle über die empfangenen Daten und wussten nicht, welche Schlüssel im JSON vorhanden waren.Wenn Sie sie alle auflisten oder in einer Tabelle anzeigen möchten und die Schlüssel für Nullobjekte nicht im Wörterbuch enthalten sind, wird eine falsche Liste angezeigt.

NSNull ist der Platzhalter "nichts" für Cocoa-Sammlungen, und deshalb wird er in diesem Fall verwendet.

Sie könnten Ihre Eingabe mit einem Makro etwas erleichtern:

#define nilOrJSONObjectForKey(JSON_, KEY_) [[JSON_ objectForKey:KEY_] isKindOfClass:[NSNull class]] ? nil : [JSON_ objectForKey:KEY_]

nickname = nilOrJSONObjectForKey(json, @"nickname");

Andere Tipps

Sie können Flag SetRemovesKeysWithnullValues auf Ja in AFHTTPSESSIONMANAGER-Antwort set. generasacodicetagpre.

Die Antwort von DV_ funktioniert für AfHttpsessionManager ideal.Wenn Sie jedoch AFHTTPREQUESTOPERATION anstelle des Managers verwenden, versuchen Sie dies:

generasacodicetagpre.

Es gibt einen schönen Kakaapod namens Hacking https://github.com/hyperoslo/inced das kannTun Sie etwas, das Ihnen helfen kann, NULL von JSON-Antwort umzugehen.Anstelle von Null setzt sie leere Zeichenfolge.

Wenn Sie die Standard-NSJsonerialisierung durch SBJSON ersetzen, wird er Ihr Problem lösen.

sbjson macht Objekte nil anstelle von NSJsonserialization von "null"

Schauen Sie sich die Anforderungen an die verschiedenen JSON-Parser an, die Sie verwenden können. https://github.com/afetworking/afetworking#requirements

Sie können bei diesen Funktionen individuell gestalten.Stellen Sie einen beliebigen Wert standardmäßig auf Objekte, die null sind

generasacodicetagpre.

}

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top