2015-08-20 1 views
1

У меня есть объект, который является экземпляром класса похож на это:Преобразование объекта в JSON строку для запроса POST

class MyClass { 
    let aString: String 
    let bString: String 
    var cArray = [AnotherClass]() 

    init etc... 
} 

AnotherClass что-то вроде:

class AnotherClass { 
    let aInt: Int 
    let bInt: Int 
    var cFloat = Float 

    init etc... 
} 

Хорошо, теперь мне нужно передать этот объект (экземпляр MyClass) в качестве запроса POST строка параметр в формате:

{ 
    "aString": "1", 
    "bString": "yannis", 
    "cArray": [ 
     { 
     "aInt": 1965887, 
     "bInt": 36513032311523, 
     "cFloat": 1.0 
     }, 
     { 
     "aInt": 1916915, 
     "bInt": 360397932121597, 
     "cFloat": 1.0 
     } 
    ] 
} 

Любые идеи, как достичь этого? Я использую Swift 1.2 (и SwiftyJSON, если это помогает) Спасибо!

ответ

0

Вам нужно преобразовать оба объекта в словарях, добавив функцию, как:

func convertToDictionary() -> Dictionary<String, AnyObject> { 

    return [ 
     "aString": self.aString, 
     "bString": self.bString, 
     "cArray": self.cArray 
    ] 
} 

к обоим классам.

Тогда сериализовать с помощью:

let theJSONData = NSJSONSerialization.dataWithJSONObject(
    dictionary , 
    options: NSJSONWritingOptions(0), 
    error: nil) 

Где dictionary что-то вроде dictionary = myClass.convertToDictionary

Может быть, даже сериализации вложенных объектов в массиве для MyClass перед тем сериализации MyClass объекта, а также.

2

Прежде всего, насколько я знаю SwiftyJSON не поддерживаю проецирования объектов в JSON, это только для разбора объекта JSON, извлеченного из какого-либо источника.

Если вам нужно сделать Mapping объекта в JSON Есть некоторые хорошие библиотеки, которые можно использовать как два следующих:

Документация на оба очень легко следовать. Но если вам не нужно создавать очень сложный JSON из очень сложного класса, вы можете самостоятельно обработать его каким-либо методом для сопоставления своего объекта с JSON и с помощью класса NSJSONSerialization вы можете проверить свое творение перед его использованием. Вы можете многому научиться, сделав картографирование самостоятельно в статье Strong Type Object Serialization to JSON (Nerd Alert).

Я надеюсь, что это поможет вам.

 Смежные вопросы

  • Нет связанных вопросов^_^