2015-10-29 67 views
1

這是我正在做的轉換它。日誌返回nilNSDictionary>使用SwiftyJSON的JSON字符串

let keys = ["firstName", "lastName", "age","carNumber", "licenseNumber", "email","password", "msgType"] 
let objects = ["Pencil", "Eraser", "2332","534543", "543543", "Notebook","Pencil", "ADD_DRIVER"] 
self.dictionary = NSDictionary(objects: objects, forKeys: keys) 

var data = [Dictionary<String, String>]() 
data.append(self.dictionary as! Dictionary<String, String>); 
var jsonObj = JSON(data) 

print("JSON Object") 
print(jsonObj.stringValue) 
+1

您應該添加一條關於期望輸出爲...如果您創建Dictionary 類型的數據,會發生什麼情況? –

+0

我期望輸出是一個有效的JSON字符串,我可以發佈到服務器。 –

回答

1

這是我做的,以便提交的RESTful API:

let submitJson: JSON = ["user": username, "pass": password] 
self.body = submitJson.rawString()! 

打印(self.body)返回:

{ 「通行證」:「XXX 「, 」user「:」xxx「 }

6

要使用SwiftyJSON生成JSON字符串,請使用rawString(encoding: UInt = default, options opt: NSJSONWritingOptions = default)。這樣字符串將不會包含像新行一樣的無效字符。

實施例爲一個字典:

let keys = ["firstName", "lastName", "age","carNumber", "licenseNumber", "email","password", "msgType"] 
let objects = ["Pencil", "Eraser", "2332","534543", "543543", "Notebook","Pencil", "ADD_DRIVER"] 
let dict = NSDictionary(objects: objects, forKeys: keys) 
let jsonObj = JSON(dict) 
if let stringJSON = jsonObj.rawString(NSUTF8StringEncoding, options: []) { 
    print(stringJSON) 
} 

結果:

{ 「姓氏」: 「橡皮擦」, 「密碼」: 「鉛筆」, 「年齡」: 「2332」,」名字 「:」 鉛筆」, 「licenseNumber」: 「543543」, 「電子郵件」: 「筆記本電腦」, 「carNumber」: 「534543」, 「信息類型」: 「ADD_DRIVER」}

如果像你的代碼片段你希望它在數組之前編碼爲JSON字符串,然後將它嵌入到N陣列是這樣的:

let keys = ["firstName", "lastName", "age","carNumber", "licenseNumber", "email","password", "msgType"] 
let objects = ["Pencil", "Eraser", "2332","534543", "543543", "Notebook","Pencil", "ADD_DRIVER"] 
let dict = NSDictionary(objects: objects, forKeys: keys) 
let jsonObj = JSON([dict]) 
if let stringJSON = jsonObj.rawString(NSUTF8StringEncoding, options: []) { 
    print(stringJSON) 
} 

結果:

[{ 「MSGTYPE」: 「ADD_DRIVER」, 「密碼」: 「鉛筆」, 「名字」: 「鉛筆」, 「年齡」: 「2332」,「email」:「筆記本」,「carNumber」:「534543」,「licenseNumber」:「543543」,「lastName」:「橡皮擦」}]