2016-01-14 3 views
8

Nachstehend ist meine benutzerdefinierte Swift-Klasse. Meine Frage ist, wie man ein Objekt dieser Klasse mit SwiftyJson in eine JSON-Zeichenkette konvertiert?Kann SwiftyJson eine benutzerdefinierte Swift-Klasse in eine JSON-Zeichenfolge konvertieren?

class Equipment{ 

    var UniqueItemId:String? = "" 
    var ItemNo:String? = "" 
    var EquipmentType:String? = "" 
    var EquipmentDescription:String? = "" 
    var Length:String? = "" 
    var Wll:String? = "" 
    var EquipmentLocation:String? = "" 
    var EquipmentManufacture:String? = "" 
    var SerialNo:String? = "" 
    var Condition:String? = "" 
    var Remarks:String? = "" 
    var InspectionDate:String? = "" 
    var Inspector:String? = "" 

} 

Zum Beispiel wie folgt aus:

var jsonString = JSON(equipmentObject); 
+6

Sie Frage misframed ist: SwiftlyJson ist eine Bibliothek, die * liest * JSON. Es erzeugt * JSON nicht. –

+0

Wenn Sie nach Funktionalität wie GSON für Java suchen, ich glaube nicht, dass Sie das in swift – Fonix

+0

@Gwendal Roué tun können: goodness .. Ich war total verloren. Vielen Dank für das Gespräch, gibt es noch eine andere Alternative, um das zu tun? –

Antwort

8

UPDATE

OP ist jetzt glücklich mit EVReflection. Ich nehme an, dass es in diesem Moment die beste Wahl ist.

ORIGINAL ANTWORT

Da Swift Reflexionsmöglichkeiten ist noch nicht so reiche es jetzt wie google-gson für Java keine ultimative Lösung ist.

Bibliotheken wie SwiftJSON und Swift ObjectMapper sind nur gezuckert NSJSONSerialization und erfordern, dass Sie Zuordnungen von JSON-Felder zu Objekteigenschaften definieren.

Aber die Dinge ändern und Sie können JsonSerializerSwift ausprobieren. Ich habe es noch nicht benutzt, aber es verwendet schnelle Reflexion und scheint gut zu funktionieren.

Sie können auch Swift Mirrors and JSON by Chris Eidhof Artikel. Es erklärt, wie JSON-Serialisierung mit Reflektionsmöglichkeiten funktioniert.

+0

Vielen Dank. Das erklärt fast alle Möglichkeiten, die ich hier habe. Ich werde versuchen, JsonSerializerSwift zu verwenden. –

+1

Es sieht so aus, als ob JsonSerializerSwift einige Probleme bei der Konvertierung komplexer Objekte hat, die verschachtelte Objekte enthalten. Die beste Alternative, die ich gefunden habe, ist "EVReflection" (https://github.com/evermeer/EVReflection). Kann auch Objekt-> JSON und JSON-> Objekt konvertieren. Das funktioniert wie ein Zauber. –

+0

Thx! Ich habe einen Link zu meiner Antwort hinzugefügt. – mixel

1

In Swift 4, gibt es jetzt die Kodierbare Framework, das in gebacken wird. Aus meiner Forschung ist dies die beste Option für diejenigen, die auf die neueste Version der Sprache aktualisieren.

Wenn die Eigenschaftsnamen identisch sind es nur ein paar Zeilen ein JSON-Decoder zu rufen, und wenn sie anders sind Sie nur einen kleinen Switch-Anweisung zu schreiben, um sie abzubilden.

Ich bin sicher, dass in den kommenden Monaten eine Bibliothek öffnet sich der Standard-Mapping Situationen zu kümmern aber anders als das es sieht ziemlich gut aus der Box.

überprüfen Sie es hier: http://benscheirman.com/2017/06/ultimate-guide-to-json-parsing-with-swift-4/

Verwandte Themen