json - 如何在 swift 中创建特定的数据结构。 Swifty Json 没有用 :(

标签 json api swift calendar google-calendar-api

我正在将我非常简单的应用程序从 javascript(嵌入在应用程序中)移植到 ios8/swift 和 Xcode。 该应用程序将使用 CalendarApiV3 在谷歌日历中插入一些简单的事件。

在 javascript 中很容易创建一个简单的数据结构来传递一个 http POST 请求,就像这个结构:

var data:struct =
    {
        "end": {
            "dateTime": "20141223T12:25:00Z"
        },
        "start": {
            "dateTime": "20141223T10:25:00Z"
        },
        "summary": "description of event",
        "reminders": {
            "useDefault": false,
            "overrides": [
            {
            "method": "sms",
            "minutes": "60"
            },
            {
            "method": "email",
            "minutes": "60"
            }
            ]
        }
    };

好的,如何在 Swift 中重新创建 some 结构? 我最终寻找 swifty json,但他们都告诉我如何解析请求的 json,而不是如何形成 json 请求。 我希望我说的很清楚。

提前致谢。

维克多

最佳答案

这是一个非常简单的示例,我假设没有人愿意处理 JSON 字符串,他们希望从数据结构中创建它们。

var dict1 = ["dave": "drangle", "hume": "cronyn"]
var dict2 = ["bob": "fossil", "vince": "powers"]
var ary = [dict1, dict2]
var jsonData = JSON(ary)
var post:NSData = jsonData.rawData()!;
var postLength:NSString = String(post.length)

var url:NSURL = NSURL(string: "https://some.server.com/mobile.php")!
var request:NSMutableURLRequest = NSMutableURLRequest(URL: url)
request.HTTPMethod = "POST"
request.HTTPBody = post
request.setValue(postLength, forHTTPHeaderField: "Content-Length")
request.setValue("application/x-www-form-urlencoded", forHTTPHeaderField: "Content-Type")
request.setValue("application/json", forHTTPHeaderField: "Accept")


if let data = NSURLConnection.sendSynchronousRequest(request, returningResponse: nil, error: nil) {
   println(data)
}

如您所见,它是一个字典数组,然后将其转换为 SwiftyJSON 结构。 jsonData.rawData()!是什么让你 NSData 是 request.HTTPBody 所需的数据类型。这是您使用 file_get_contents("php://input") 和 print_r(json_decode()) 在 PHP 服务器端看到的内容:

[{"hume":"cronyn","dave":"drangle"},{"bob":"fossil","vince":"powers"}]
Array
(
   [0] => stdClass Object
   (
       [hume] => cronyn
       [dave] => dangler
   )

   [1] => stdClass Object
   (
       [bob] => fossil
       [vince] => powers
   )

)

关于json - 如何在 swift 中创建特定的数据结构。 Swifty Json 没有用 :(,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27590754/

相关文章:

api - 使用 Sails JS 对 Jira REST API 进行身份验证

swift - 如何快速向服务器发出 HTTPS 请求?

ios - 如何在iOS自动布局中构建单行和多行标签的布局?

javascript - 为什么只有部分 JSON 数据而不是全部发送到 DOM?

json - Swagger UI 在响应正文中返回 "no content",响应代码为 0

php - 如何像缩略图画廊一样嵌入 youtube channel ?

ios - 从 iOS 应用程序启动 watchOS2 应用程序

java - 当 json 中的键之一包含值列表时,使用 Retrofit 将 JSON 键值对转换为 Java 对象

支持 DOM 样式访问的 Java JSON 库

api - 国标英语还是美式英语?