2016-01-14 7 views
8

Dato che di seguito è la mia classe Swift personalizzata. La mia domanda è come convertire un oggetto di questa classe in una stringa json usando SwiftyJson?SwiftyJson è in grado di convertire una classe swift personalizzata in una stringa json?

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? = "" 

} 

Per esempio, in questo modo:

var jsonString = JSON(equipmentObject); 
+6

È questione è misframed: SwiftlyJson è una libreria che * si legge * JSON. Non * produce * JSON. –

+0

se stai cercando funzionalità come GSON per java, non penso che tu possa farlo in modo rapido – Fonix

+0

@Gwendal Roué: bontà .. Ero totalmente perso. Grazie mille per l'heads up, c'è qualche altra alternativa in grado di farlo? –

risposta

8

UPDATE

OP è ora felice con EVReflection. Quindi presumo che in questo momento sia la scelta migliore.

RISPOSTA ORIGINALE

Dal possibilità di riflessione Swift non è ancora così ricco non esiste una soluzione definitiva ora come google-gson per Java.

Le librerie come SwiftJSON e Swift ObjectMapper sono appena zuccherate NSJSONSerialization e richiedono la definizione di mapping dai campi json alle proprietà dell'oggetto.

Ma le cose stanno cambiando e si può provare JsonSerializerSwift. Non l'ho ancora usato ma usa il riflesso di Swift e sembra funzionare bene.

Controllare anche articolo Swift Mirrors and JSON by Chris Eidhof. Spiega come funziona la serializzazione JSON usando le possibilità di riflessione.

+0

Grazie mille. Questo spiega quasi tutte le opzioni che ho qui. Proverò ad usare JsonSerializerSwift. –

+1

Sembra che JsonSerializerSwift abbia alcuni problemi con la conversione di oggetti complessi che contengono oggetti nidificati in essi. L'alternativa migliore che ho trovato è "EVReflection" (https://github.com/evermeer/EVReflection). Può anche convertire oggetti-> json e Json-> oggetto. Funziona come un fascino. –

+0

Thx! Ho aggiunto il link alla mia risposta. – mixel

1

In Swift 4, ora è disponibile la struttura codificabile. Dalla mia ricerca questa è l'opzione migliore per coloro che possono eseguire l'aggiornamento all'ultima versione della lingua.

Se i nomi di proprietà sono identici, solo poche righe richiamano un decodificatore json e, se sono diversi, è sufficiente scrivere una piccola istruzione switch per mapparli.

Sono sicuro che nei prossimi mesi verrà visualizzata una libreria che si occuperà delle situazioni di mappatura standard ma, a parte questo, le cose stanno andando abbastanza bene fuori dagli schemi.

controllare qui: http://benscheirman.com/2017/06/ultimate-guide-to-json-parsing-with-swift-4/