gpt4 book ai didi

php - 将 json 字典数组从 swift 3 发送到 php

转载 作者:行者123 更新时间:2023-11-30 12:59:29 25 4
gpt4 key购买 nike

我想使用 NSURLConnection.sendAsynchronousRequest 将字典数组发送到 php 文件。我认为最好的方法是将 json 对象发送到 php 文件,以避免单独发送每个对象。但是,json 对象已成功发送并由 php 文件接收,但当我解码该对象时,我得到 null 。有人知道我的代码有什么问题吗?

我的快速代码是:

var jsonArray = [Dictionary<String,AnyObject>]()


for user in users {

let dictionary = ["user_id": user.userid, "username":user.username] as [String : Any] // random example

jsonArray.append(dictionary as Dictionary<String, AnyObject>)
}

let url: URL = URL(string: str)!

let rqst:NSMutableURLRequest = NSMutableURLRequest(url:url)

rqst.timeoutInterval = 10

let bodyData = "json=\(jsonArray)"

rqst.httpMethod = "POST"

rqst.httpBody = bodyData.data(using: String.Encoding.utf8)

rqst.httpBody = bodyData.data(using: String.Encoding.utf8)

PHP 端:

if(isset($_POST["json"])){

echo "hello world";
$json = $_POST["json"];

echo $json;

$jsonArray = json_decode($json);

echo gettype($jsonArray);
}

else
echo "missing fields";

发生的情况是,当我回显 jsonArray 的类型时,即使当我回显 $json 时我得到正确的值,我也会得到 null。另外,将 rqst.setValue("application/json", forHTTPHeaderField: "Content-Type") 添加到我的 swift 代码中会使 $_POST["json"] 未设置。

有人知道如何解决这个问题吗?

最佳答案

您实际上发送的是 Dictionary 结构的 description 值,该结构与 JSON 略有不同。

例如,

字典有 = 而不是 :。您应该用有效的 JSON 字符串重写字典。

首先,使用 NSJSONSerialization 对象将 Dictionary 实例转换为 NSData 实例

let data = NSJSONSerialization.dataWithJSONObject(dictionary, options: .AllowFragments)

然后将NSData转换为String

let json = String(data: data, encoding: NSUTF8StringEncoding)

现在您可以在请求中发送此 json 值。

关于php - 将 json 字典数组从 swift 3 发送到 php,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40013341/

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