2016-07-29 53 views
0

我有我想创建并发送到服务器的这个JSON文件。我是使用JSON的新手,所以请有人指导我如何创建此对象?如何在Swift中创建这个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": [] 
} 
+0

[在swift 2中解析json对象]可能的副本(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

尝试使用这种

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代码 斯威夫特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

尝试了你的metohd。当我尝试打印jsonData来查看它是否正确时,我在控制台中得到了这个结果<7b0a2020 22616374 69766974 69657322 203a205b 0a202020 207b0a20 20202020 20226163 74697669 74795f64 75726174 696f6e22 203a2022 32373638 30303022 2c0a2020 20202020> – Byte

+0

@Byte YES是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) 
} 

将api调用给出的JSON结果传递给此方法。