在Swift iOS中解码的PHP JSON返回空值

在Swift iOS中解码的PHP JSON返回空值,php,ios,json,swift,Php,Ios,Json,Swift,我正在尝试将JSON从PHP发送到iOS Swift 但当我用Swift解码json时,值是“” 虽然钥匙很好 我了解到PHP中的变量必须进行UTF-8编码,但即使在编码之后也会出现同样的问题 有人能帮我解决这个问题吗? 您可以复制并粘贴PHP和Swift代码。 如果在web浏览器中运行此代码,则 {"upDirection":"\u00ec\u00a2\u0085\u00ed\u0095\u00a9\u00ec\u009a\u00b4\u00eb\u008f\u0099\u00ec\u009

我正在尝试将JSON从PHP发送到iOS Swift

但当我用Swift解码json时,值是“”

虽然钥匙很好

我了解到PHP中的变量必须进行UTF-8编码,但即使在编码之后也会出现同样的问题

有人能帮我解决这个问题吗?

您可以复制并粘贴PHP和Swift代码。


如果在web浏览器中运行此代码,则

{"upDirection":"\u00ec\u00a2\u0085\u00ed\u0095\u00a9\u00ec\u009a\u00b4\u00eb\u008f\u0099\u00ec\u009e\u00a5"}
代码如下:

<?php
//if(isset($_POST["stationId"]) && isset($_POST["dateTime"])) {
   include('simple_html_dom.php');

   /* for testing */
   $station_id = "923";
   $date_time  = "201507091750";

   $url  = "http://m.map.naver.com/pubtrans/inquireSubwayDepartureInfo.nhn?stationID=".$station_id."&inquiryDateTime=".$date_time."00&count=5&caller=mobile_naver_map&output=json";
   $html = file_get_contents($url);


    //Json to array
    $json   = json_decode($html, true);
    $result = $json["result"];


    /**
    upDirection
    **/
    $upDirection   = $result["upDirection"];
    $upDirection   = utf8_encode($upDirection);


    // Return as json
    $return_json = [
        "upDirection" => $upDirection
    ];


    header('Content-Type: application/json; charset=utf-8');
    echo json_encode($return_json);
//}
?>

我用这个代码解决了这个问题:

let url = NSURL(string:yourUrl)
let cachePolicy = NSURLRequestCachePolicy.ReloadIgnoringLocalCacheData
var request = NSMutableURLRequest(URL: url!, cachePolicy: cachePolicy, timeoutInterval: 2.0)
request.HTTPMethod = "POST"

// set Content-Type in HTTP header
let boundaryConstant = "----------V2ymHFg03esomerandomstuffhbqgZCaKO6jy";
let contentType = "multipart/form-data; boundary=" + boundaryConstant
NSURLProtocol.setProperty(contentType, forKey: "Content-Type", inRequest: request)

// set data
var dataString = "user=mike"
let requestBodyData = (dataString as NSString).dataUsingEncoding(NSUTF8StringEncoding)
request.HTTPBody = requestBodyData

var response: NSURLResponse? = nil
var error: NSError? = nil
let reply = NSURLConnection.sendSynchronousRequest(request, returningResponse:&response, error:&error)

let results = NSString(data:reply!, encoding:NSUTF8StringEncoding)
println("API Response: \(results)")
用这个php

header('Content-Type: application/json; charset=utf-8');
$a1 = $_POST['user'];
$returnValue = array("a1"=>$a1);
echo json_encode($returnValue);

显示接收到的数据:
println(NSString(数据:数据,编码:NSUTF8StringEncoding))
如果尚未检查NSError值,则应始终执行此操作,因为第一步错误显示为零。和println(NSString(data:data,encoding:NSUTF8StringEncoding))返回'Optional({“upDirection”:“”}'
Optional({
    upDirection = "";
})
let url = NSURL(string:yourUrl)
let cachePolicy = NSURLRequestCachePolicy.ReloadIgnoringLocalCacheData
var request = NSMutableURLRequest(URL: url!, cachePolicy: cachePolicy, timeoutInterval: 2.0)
request.HTTPMethod = "POST"

// set Content-Type in HTTP header
let boundaryConstant = "----------V2ymHFg03esomerandomstuffhbqgZCaKO6jy";
let contentType = "multipart/form-data; boundary=" + boundaryConstant
NSURLProtocol.setProperty(contentType, forKey: "Content-Type", inRequest: request)

// set data
var dataString = "user=mike"
let requestBodyData = (dataString as NSString).dataUsingEncoding(NSUTF8StringEncoding)
request.HTTPBody = requestBodyData

var response: NSURLResponse? = nil
var error: NSError? = nil
let reply = NSURLConnection.sendSynchronousRequest(request, returningResponse:&response, error:&error)

let results = NSString(data:reply!, encoding:NSUTF8StringEncoding)
println("API Response: \(results)")
header('Content-Type: application/json; charset=utf-8');
$a1 = $_POST['user'];
$returnValue = array("a1"=>$a1);
echo json_encode($returnValue);