Отправить массив словарей json из swift 3 в Stack Overflow

Я хочу отправить массив словарей в файл php с помощью NSURLConnection.sendAsynchronousRequest. Я подумал, что лучший способ сделать это — отправить объект json в файл php, чтобы избежать отправки каждого объекта самостоятельно. тем не менее, объект json успешно отправляется и принимается php-файлом, но когда я декодирую объект, я получаю нулевое значение. Кто-нибудь знает, что не так с моим кодом?

мой быстрый код:

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»] не установленным.

Кто-нибудь знает, как это исправить?

0

Решение

Вы на самом деле отправляете description значение Dictionary структура, которая немного отличается от JSON,

Словарь имеет = вместо : например. Вам следует переписать ваш словарь в допустимую строку JSON.

Во-первых, конвертировать ваши Dictionary экземпляр в NSData пример с помощью NSJSONSerialization объект

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

А затем преобразовать NSData в String

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

Теперь вы можете отправить это json значение в вашем запросе.

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]