2016-08-08 31 views
2

ich dieses JSON konvertieren möchten (Dies gilt JSON) -ein JSON-Array aa Swift Array Parsing

["foo", "bar", ["cat", "dog"]] 

zu einem ähnlichen Swift-Datenstruktur, dh

["foo", "bar", ["cat", "dog"]] 

Ich frage mich, ob Im Vergleich zur Verwendung eines normalen JSON-Parsers (der ein größeres Objekt erzeugen könnte) gibt es eine optimierte Methode.

Ich verstehe, dass JSON ein Serialisierungsformat ist, während ein Swift-Array ein Objekt ist. Aber da sie so ähnlich aussehen (und funktionieren), gibt es vielleicht eine direktere Methode, die ich vermisse?

+0

Sie fragen also, wie man JSON parsen kann, ohne es mit einem Parser zu analysieren? – Alexander

+0

Nun, ich begann mit einem normalen JSON, dann hatte ich das Gefühl, dass ich die Schlüssel-Wert-Anordnung nicht wirklich brauchte, also reduzierte ich den JSON, um nur die Werte zu tragen. Dies scheint eine viel effizientere Datenstruktur im Vergleich zu einem vollständigen Schlüsselwert JSON zu sein. Jetzt frage ich mich, ob es einen sehr effizienten Algorithmus zur Umwandlung solcher "ähnlich aussehenden" Strukturen gibt. Generische JSON-Serialisierer scheinen ein umfassenderes Parsen durchzuführen, um alle Fälle abzudecken. –

+1

Oh Schatz. Tu das nicht. Solange Sie dies nicht als ein Hauptperformance-Problem identifiziert haben, sollten Sie nicht so "optimieren". Wenn Sie wirklich an der Leistung interessiert wären, würden Sie JSON nicht verwenden. Es ist der kleinste gemeinsame Nenner. Es verschwendet tonnenweise Platz in Kontrollzeichen, die nett zum Menschen, aber verschwenderisch für Maschinen sind. Es ist unkomprimiert, etc. Wenn Sie Leistung wünschen, würden Sie nach WebSockets oder irgendeiner Art von DMA suchen. – Alexander

Antwort

1

ich mit der Idee geschuftet für zwei Tage und der Code begann sehr schnell unhandlich zu werden. Mein ursprünglicher Gedanke war, dass der Zugriff auf Werte wie diese - data[2][0], wäre schneller als der Zugriff auf Werte wie diese - data['animals']['pets']

Innerhalb von zwei Tagen ist der Code jedoch weniger verständlich, auch für einen einzelnen Entwickler. Ich musste feste Zahlen in den Parsing-Code setzen, und es machte die Erweiterung der JSON-Struktur fast unmöglich. Also würde ich generell vorschlagen, dies NICHT zu tun.

Having said that, ich fand diese Swift Bibliothek EVReflection, die ganz in der Nähe ist das, was ich suchte.