NSURLConnection.sendAsynchronousRequestを使用してphpファイルに辞書の配列を送りたいと思います。私はそうする最良の方法は、各オブジェクトをそれ自身で送信することを避けるためにPHPファイルにjsonオブジェクトを送信することだと思った。しかし、jsonオブジェクトは正常に送信され、PHPファイルで受信されますが、オブジェクトをデコードすると、代わりにnullが返されます。誰でも自分のコードに何が間違っているか知っていますか?辞書のjson配列をswift 3からPHP
私のSWIFTコードは次のとおりです。
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をエコーときに私はいてもヌル得るということです正しい値。 また、即時コードにrqst.setValue("application/json", forHTTPHeaderField: "Content-Type")
を追加すると、$ _POST ["json"]が設定されません。
これを修正する方法を知っている人はいますか?
私は辞書の配列を送信していますが、各辞書または最後に辞書の配列にデータ= NSJSONSerializationを行いますか? –
あなたはあなたの配列 –
を直接変換することができますが、$ jsonオブジェクトの実際のオブジェクトの代わりにバイト数を返すようになり、json_decode($ json)はnullを返します。 –