2016-04-08 21 views
8

numaralı JSON String'e dönüştürün Aynı başlık here ile bir soru olduğunu biliyorum. Ancak bu soruda, bir sözlüğü JSON'a dönüştürmeye çalışıyor. Ama böyle basit bir sokağım var: "bahçe"Basit bir dize

Ve bunu JSON olarak göndermem gerekiyor. SwiftyJSON'u denedim ancak yine de bunu JSON'a dönüştüremiyorum. Geçen hattında

Kodum çöker:

fatal error: unexpectedly found nil while unwrapping an Optional value 

ben yanlış mı yapıyorum İşte

benim kodudur?

cevap

18

JSON has to be an array or a dictionary, yalnızca bir Dize olamaz.

Ben bunu da dize içeren bir dizi oluşturmak önermek: yerine bir dize olarak bu JSON gerekiyorsa

if let json = try? NSJSONSerialization.dataWithJSONObject(array, options: []) { 
    // here `json` is your JSON data 
} 

:

let array = ["garden"] 

Sonra bu diziden bir JSON nesnesi oluşturmak veri bunu kullanabilirsiniz:

if let json = try? NSJSONSerialization.dataWithJSONObject(array, options: []) { 
    // here `json` is your JSON data, an array containing the String 
    // if you need a JSON string instead of data, then do this: 
    if let content = String(data: json, encoding: NSUTF8StringEncoding) { 
     // here `content` is the JSON data decoded as a String 
     print(content) 
    } 
} 

Baskı:

[ "bahçe"]

Eğer bir sözlük ziyade bir dizi yapmak isterseniz, aynı fikri izleyin: dönüştürmek ardından sözlüğü oluşturun.

let dict = ["location": "garden"] 

if let json = try? NSJSONSerialization.dataWithJSONObject(dict, options: []) { 
    if let content = String(data: json, encoding: NSUTF8StringEncoding) { 
     // here `content` is the JSON dictionary containing the String 
     print(content) 
    } 
} 

Baskılar:

{ "konum": "bahçe"}

1

Swift 3 Versiyon:

let location = ["location"] 
    if let json = try? JSONSerialization.data(withJSONObject: location, options: []) { 
     if let content = String(data: json, encoding: .utf8) { 
      print(content) 
     } 
    }