2016-07-29 2 views
0

У меня есть этот файл JSON, который я хочу создать и отправить на сервер. Я новичок в использовании JSON, поэтому, пожалуйста, кто-нибудь может мне помочь, как я могу создать этот объект?Как создать этот объект JSON в Swift

{ 
"today_steps": 5663, 
"activities": [{ 
    "activity_name": "Walking", 
    "start_datetime": "2016-07-03 10:03AM", 
    "activity_duration": 2768000, 
    "steps": 1362, 
    "average_heart": 96, 
    "calories": 109 
}, { 
    "activity_name": "Running", 
    "start_datetime": "2016-07-03 02:45PM", 
    "activity_duration": 1768000, 
    "steps": 2013, 
    "average_heart": 112, 
    "calories": 271 
}], 
"workout": [] 
} 
+0

Возможный дубликат [parse json object in swift 2] (http://stackoverflow.com/questions/35093112/parse-json-object-in-swift-2) –

ответ

0

Вам не всегда нужно создавать объект для отправки его на сервер. Вы также можете создать запрос с требуемыми заголовками, и вы можете отправить его в виде строки.

Посмотрите на эту библиотеку и ее документацию.

https://github.com/Alamofire/Alamofire

Вы также можете отправить NSDictionary и эта библиотека будет преобразовывать, что в объект JSON.

Пример из их github.

let parameters = [ 
    "foo": [1,2,3], 
    "bar": [ 
     "baz": "qux" 
    ] ] 

Alamofire.request(.POST, "https://httpbin.org/post", parameters: parameters, encoding: .JSON) 
// HTTP body: {"foo": [1, 2, 3], "bar": {"baz": "qux"}} 
0

Использование Try это

let json = [ 
       "today_steps": 5663, 
       "activities": [[ 
        "activity_name": "Walking", 
        "start_datetime": "2016-07-03 10:03AM", 
        "activity_duration": 2768000, 
        "steps": 1362, 
        "average_heart": 96, 
        "calories": 109 
       ], [ 
        "activity_name": "Running", 
        "start_datetime": "2016-07-03 02:45PM", 
        "activity_duration": 1768000, 
        "steps": 2013, 
        "average_heart": 112, 
        "calories": 271 
       ]], 
       "workout": [] 
      ] 
1

код Try Swift 2

let activities = [["activity_name":"Walking", 
    "start_datetime":"2016-07-03 10:03AM", 
    "activity_duration":2768000, 
    "steps":1362, 
    "average_heart":96, 
    "calories":109], 
        ["activity_name":"Running", 
        "start_datetime":"2016-07-03 02:45PM", 
        "activity_duration":1768000, 
        "steps":2013, 
        "average_heart":112, 
        "calories":271]] 

let dictionary = ["today_steps":5663, 
        "activities":activities, 
        "workout":[] 
] 

print(dictionary) 

do { 
    let jsonData = try NSJSONSerialization.dataWithJSONObject(dictionary, options: NSJSONWritingOptions.PrettyPrinted) 
    // here "jsonData" is the dictionary encoded in JSON data 
} catch let error as NSError { 
    print(error) 
} 

Swift3 изменение новообращенный словаря в Json по

let jsonData = try JSONSerialization.data(withJSONObject: dictionary, options: .prettyPrinted) 
+0

Пробовал ваш код. Когда я пытаюсь распечатать jsonData, чтобы увидеть это правильно или нет, я получаю это в своей консоли <7b0a2020 22616374 69766974 69657322 203a205b 0a202020 207b0a20 20202020 20226163 74697669 74795f64 75726174 696f6e22 203a2022 32373638 30303022 2c0a2020 20202020> – Byte

+0

@Byte ДА это данные json, а вы может отправить серверу, установив его в свойство NSMutableURLRequest HTTPBody – larva

+0

@Byte, если вы запрашиваете сервер с библиотекой (например, AFNetworking), возможно, это поддержка отправки прямого словарного формата на сервер – larva

0

Вы можете использовать класс NSJSONSerialization для преобразования данных в объект, который впоследствии может быть проанализирован. Всегда можно использовать метод, подобный приведенному ниже.

// Given raw JSON, return a usable Foundation object 
private func convertDataWithCompletionHandler(data: NSData, completionHandlerForConvertData: (result: AnyObject!, error: NSError?) -> Void) { 

    var parsedResult: AnyObject! 
    do { 
     parsedResult = try NSJSONSerialization.JSONObjectWithData(data, options: .AllowFragments) 
    } catch { 
     let userInfo = [NSLocalizedDescriptionKey : "Could not parse the data as JSON: '\(data)'"] 
     completionHandlerForConvertData(result: nil, error: NSError(domain: "convertDataWithCompletionHandler", code: 1, userInfo: userInfo)) 
    } 

    completionHandlerForConvertData(result: parsedResult, error: nil) 
} 

Передайте результат JSON, полученный при вызове api к этому методу.

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