NSDictionary › Строка JSON с использованием SwiftyJSON

Это то, что я делаю, чтобы преобразовать его. Журнал возвращает nil

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)

person Alik Rokar    schedule 29.10.2015    source источник
comment
Вы должны добавить примечание о том, что вы ожидаете получить на выходе... Что произойдет, если вы создадите данные типа Dictionary‹String, AnyObject›?   -  person Daniel T.    schedule 29.10.2015
comment
Я ожидаю, что вывод будет допустимой строкой JSON, которую я могу отправить на сервер.   -  person Alik Rokar    schedule 29.10.2015


Ответы (2)


Чтобы создать строку JSON с помощью SwiftyJSON, используйте 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)
}

Результат:

{"lastName":"Ластик","пароль":"Карандаш","возраст":"2332","firstName":"Карандаш","номер лицензии":"543543","электронная почта":"Блокнот"," carNumber":"534543","msgType":"ADD_DRIVER"}

Если, как и в вашем фрагменте, вы хотите, чтобы он был в массиве перед кодированием в строку JSON, просто вставьте его в такой массив:

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","пароль":"Карандаш","firstName":"Карандаш","возраст":"2332","электронная почта":"Ноутбук","carNumber":"534543", "licenseNumber":"543543","lastName":"Ластик"}]

person Eric Aya    schedule 01.11.2015

Вот как я это сделал для отправки в RESTful API:

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

print(self.body) возвращает:

{ "пароль": "xxx", "пользователь": "xxx" }

person Andy    schedule 01.11.2015