Utworzyłem następny słownik:
var postJSON = [ids[0]:answersArray[0], ids[1]:answersArray[1], ids[2]:answersArray[2]] as Dictionary
i dostaję:
[2: B, 1: A, 3: C]
Jak mogę go przekonwertować na JSON?
json
swift
serialization
Orkhan Alizade
źródło
źródło
NSJSONSerialization
Odpowiedzi:
Swift 3.0
W Swift 3 nazwa
NSJSONSerialization
i jej metody uległy zmianie, zgodnie z wytycznymi projektowymi API Swift .Swift 2.x
Szybki 1
źródło
[2: A, 1: A, 3: A]
. Ale co z nawiasami klamrowymi?{"result":[{"body":"Question 3"}] }
dataWithJSONObject
będzie produkować „nawiasów klamrowych” (czyli wzmocnienia) jako część powstałegoNSData
obiektu.Dokonujesz błędnego założenia. Tylko dlatego, że debugger / Plac zabaw pokazuje Twój słownik w nawiasach kwadratowych (tak jak Cocoa wyświetla słowniki), co nie znaczy, że tak jest sformatowane wyjście JSON.
Oto przykładowy kod, który przekonwertuje słownik ciągów na JSON:
Wersja Swift 3:
Aby wyświetlić powyższe w formacie „ładnie wydrukowanym”, zmień wiersz opcji na:
Lub w składni Swift 2:
Wynikiem tego jest
Lub w ładnym formacie:
Słownik jest zamknięty w nawiasach klamrowych na wyjściu JSON, tak jak można się spodziewać.
EDYTOWAĆ:
W składni Swift 3/4 powyższy kod wygląda następująco:
źródło
Swift 5:
Pamiętaj, że klucze i wartości muszą zostać zaimplementowane
Codable
. Strings, Ints i Doubles (i więcej) są jużCodable
. Zobacz Kodowanie i dekodowanie typów niestandardowych .źródło
Moja odpowiedź na twoje pytanie znajduje się poniżej
Odpowiedź to
źródło
Dictionary
Rozszerzenie Swift 4 .źródło
encoding: .ascii
z rozszerzenia publicznego..utf8
będzie znacznie bezpieczniejszy!Czasami konieczne jest wydrukowanie odpowiedzi serwera do celów debugowania. Oto funkcja, której używam:
Przykład zastosowania:
źródło
Swift 3 :
źródło
Odpowiedź na twoje pytanie znajduje się poniżej:
Swift 2.1
źródło
Oto łatwe rozszerzenie, aby to zrobić:
https://gist.github.com/stevenojo/0cb8afcba721838b8dcb115b846727c3
źródło
źródło