2017-05-18 61 views
0

我無法從我的php頁面中獲取簡單的Json對象到我的ios應用程序中。我在xcode 8中使用了Swift 3.我嘗試了多個教程,但都無濟於事。我不斷收到錯誤「錯誤域= NSCocoaErrorDomain代碼= 3840」JSON文本沒有開始與數組或對象和選項,以允許片段沒有設置。「我檢查了我的PHP頁面與Json驗證程序,它似乎很好。 。在正確的方向幫助將不勝感激這是迴盪於我的PHP頁面我的JSON數據從swift中獲取Json數據從php頁面3

。{「SSID」:「TESTSSID」,「PASS」:「TESTPASS」}

正如你可以看到,我所要做的就是能夠將SSID和PASS轉換爲Swift中的變量,以便我可以將數據輸出到應用程序。以下是我迄今爲止用於swift代碼的內容(對不起,如果它是可怕的,我是一個新手,只是把它砍在一起)

Th是在我viewDidLoad中()..

let urlString = "http://192.168.51.1/mytestPHP.php" 

    let url = URL(string: urlString) 
    URLSession.shared.dataTask(with:url!) { (data, response, error) in 
     if error != nil { 
      print(error) 
     } else { 
      do { 

       let parsedData = try JSONSerialization.jsonObject(with: data!, options: []) as! [String:Any] 
       let SSID = parsedData["SSID"] as! [String:Any] 

       print(SSID) 

      } catch let error as NSError { 
       print(error) 
      } 
     } 

}.resume() 

回答

0

在你的JSON響應都SSIDPASS鍵有String作爲價值不Dictionary

do { 
    let parsedData = try JSONSerialization.jsonObject(with: data!, options: []) as! [String:Any] 
    if let ssid = parsedData["SSID"] as? String, 
     let pass = parsedData["PASS"] as? String { 
     print(ssid, pass) 
    } 
} catch let error as NSError { 
    print(error) 
} 

注:由於錯誤提示你的反應是無效所以儘量一次數據轉換爲string,檢查你是在響應得到什麼。在撥打JSONSerialization並在此處作出迴應之前,請添加以下行。

print(String(data: data!, encoding: .utf8)) 
+0

感謝您的快速回復!我替換了你的do/catch塊並得到了同樣的錯誤。然後在JSONSerialization之前添加打印語句並得到這個... –

+0

@JonBell得到什麼? –

+0

可選(「<!DOCTYPE html PUBLIC \」 - // W3C // DTD XHTML 1.0 Transitional // EN \「\」http://www.ww3.oo \ nrg/TR/xhtml1/DTD/xhtml1-transitional。 dtd \「> \ n \ n \ n \ n APP INTERFACE \ n \ n \ n \ n {\」SSID \「:\」TESTSSID \「,\」PASS \「:\」 TESTPASS \「} \ n \ n」) 錯誤域= NSCocoaErrorDomain代碼= 3840「JSON文本沒有以數組或對象和允許片段未設置的選項開始。 UserInfo = {NSDebugDescription = JSON文本沒有啓動... –

0

你基本上得到一個無效的JSON錯誤,因此無論你的PHP腳本沒有返回你認爲它的返回,或者它根本不返回任何東西的JSON。

+0

是的,我認爲是這種情況,但這正是從PHP腳本打印到屏幕上。{「SSID」:「TESTSSID」,「PASS」:「TESTPASS」} –

+0

它看起來你不打印JSON,但只是普通的字符串,你使用這個回聲json_encode($ data); ?您應該將PHP代碼添加到問題中,因爲這是問題所在。 – null