gpt4 book ai didi

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

转载 作者:搜寻专家 更新时间:2023-11-01 06:10:02 25 4
gpt4 key购买 nike

我正在将我非常简单的应用程序从 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com