2015-06-16 46 views
3
[ 
    { 
     "_id": "557f27522afb79ce0112e6ab", 
     "endereco": { 
      "cep": "asdasd", 
      "numero": "asdasd" 
     }, 
     "categories": [], 
     "name": "teste", 
     "hashtag": "teste" 
    } 
] 

返回nil沒有錯誤:NSJSONSerialization.JSONObjectWithData返回零

var json = NSJSONSerialization.JSONObjectWithData(data, options:NSJSONReadingOptions.AllowFragments, error: &erro) as? NSDictionary 
+0

順便說一句,'NSJSONReadingOptions.AllowFragments'是不必要的。你可以使用'nil'。 – Rob

回答

4

它返回nil沒有錯誤,因爲它不是真實失敗的JSON解析。由於將結果對象作爲字典進行條件類型轉換,因此失敗。那個JSON不代表一個字典:它是一個包含一個項目的數組(這恰好是一個字典)。外部[]表示一個數組。所以,當你解析這個時,你想把它作爲NSArray

例如,在雨燕1.2,你可以:

if let json = NSJSONSerialization.JSONObjectWithData(data, options: nil, error: &error) as? NSArray, let dictionary = json.firstObject as? NSDictionary { 
    println(dictionary) 
} else { 
    println(error) 
} 

或者你可以將它轉換爲字典的數組:

if let json = NSJSONSerialization.JSONObjectWithData(data, options: nil, error: &error) as? [[String: AnyObject]], let dictionary = json.first { 
    println(dictionary) 
} else { 
    println(error) 
} 
+0

你能告訴我,我該怎麼做代碼? –

+0

示例代碼plz? –

+0

Tnx s2工作正常! –

0

調用isValidJSONObject:或試圖轉換是明確的方式來告訴給定的對象是否可以轉換爲JSON數據。

isValidJSONObject(_ :) 返回一個布爾值,該值指示給定對象是否可以轉換爲JSON數據。

宣言 SWIFT 類FUNC isValidJSONObject(_ OBJ:AnyObject) - >布爾 參數 OBJ 測試的對象。 返回值 如果obj可以轉換爲JSON數據,則返回true,否則返回false。

討論 可用性 適用於iOS 5.0及更高版本。

+0

你應該爲你的答案提供一個例子。謝謝。 – Hazonko