php json_encode & newline, swift JSONSerialization 导致奇怪的输出

Posted

技术标签:

【中文标题】php json_encode & newline, swift JSONSerialization 导致奇怪的输出【英文标题】:php json_encode & newline, swift JSONSerialization causing weird output 【发布时间】:2014-09-12 22:54:57 【问题描述】:

php JSON 和 Swift JSON 的一些问题。请帮我弄清楚多余的空格、\n 和其他东西是怎么回事。为什么输出不是一个干净的连续字符串。我不需要漂亮的打印或任何东西。

PHP:

$sql = "SELECT * FROM entries";
$stmt = $db->prepare($sql);
$stmt->execute();
$entries = $stmt->fetchAll(PDO::FETCH_OBJ);
$db = null;
echo '"root":'.json_encode($entries).'';

斯威夫特:

    var request : NSMutableURLRequest = NSMutableURLRequest()
    request.URL = NSURL(string: url)
    request.HTTPMethod = "GET"

    NSURLConnection.sendAsynchronousRequest(request, queue: NSOperationQueue(), completionHandler: (response:NSURLResponse!, data: NSData!, error: NSError!) -> Void in

        var error: NSError?
        let jsonResult = NSJSONSerialization.JSONObjectWithData(data, options:NSJSONReadingOptions.AllowFragments, error: &error) as? NSDictionary

        if (jsonResult != nil) 
            println(jsonResult?.description )
         else 
            println(jsonResult?.description)
        

控制台输出:

Optional("\n    root =     (\n                \n            id = 1;\n            text = \"Test Entry\";\n        ,\n                \n            id = 2;\n            text = \"Test Entry 2\";\n        \n    );\n")

数据库:

【问题讨论】:

【参考方案1】:

要么这样做:

println(jsonResult!.description)

或者这个:

println(NSString(data:data, encoding:NSUTF8StringEncoding))

【讨论】:

不要将其包装在可选项中,而是打开可选项 (? vs !)

以上是关于php json_encode & newline, swift JSONSerialization 导致奇怪的输出的主要内容,如果未能解决你的问题,请参考以下文章

php json_encode & newline, swift JSONSerialization 导致奇怪的输出

json_encode详解

PHP new StdClass() 创建空对象

json_encode() 转义正斜杠

使用 PHP json_encode() 和 MySQL 返回一个 JSON 对象以传递给 jQuery 函数 [重复]

json_encode() 删除属性 (PHP)