2017-06-21 53 views
1

我正在使用以下代碼來串行化來自Web服務器的json響應,並嘗試獲取所有鍵值對。獲取基於快捷鍵的值3

do { 
    let resultJson = try JSONSerialization.jsonObject(with: data!, options: []) as? [String:AnyObject] 

    if let dictionary = resultJson as? [String: Any] { 
     if let nestedDictionary = dictionary["Part"] as? [String: Any] { 
      // access nested dictionary values by key 
      for (key, value) in dictionary { 
       // access all key/value pairs in dictionary 
       print(key) 
       print(value) 
      } 
     } 
    } 
} catch { 
     print("Error -> \(error)") 
} 

我從服務器的響應是

["ProductInfo": { 

}, "PartTax": <__NSCFArray 0x166cff60>(
{ 

}, 
{ 

}, 
{ 

} 
) 
, "PartLog": <__NSCFArray 0x166d0a70>(
{ 

}, 
{ 

}, 
{ 

}, 
{ 

} 
) 
, "ReceivedItem": { 

}, "PartPriceLevel": <__NSCFArray 0x166cfd50>(
{ 

}, 
{ 

}, 
{ 

}, 
{ 

}, 
{ 

}, 

{ 

}, 
{ 

}, 
{ 

} 
) 
, "Part": { 
    "auxiliary_desc" = "Connie's keyman"; 
    barcode =; 
    "category_id" = 57022; 
    "primary_desc" = "MK25T/S600T Regulator combo "; 
    stock = 0; 
    "store_id" = 49537; 
}] 

我的回答有很多嵌套的數組,在「部分」是嵌套陣列中的一個,我想打印所有的鍵值對的。在這裏,當我打印resultJson時,我可以看到我的整個迴應。我跟着https://developer.apple.com/swift/blog/?id=37。有人可以幫我解決這個問題。提前致謝。

+0

你可以分享'JSON'以便更好地理解嗎? –

+1

你需要使用的'resultJson'在'jsonWithObjectRoot'的地方 –

+0

爲什麼你不試試我的答案..你應該從'resultJson'得到json,如下面的回答 –

回答

1
do { 
    let resultJson = try JSONSerialization.jsonObject(with: data!, options: []) as? [String:AnyObject] 

    if let dictionary = resultJson as? [String: Any] { 
     if let nestedDictionary = dictionary["Part"] as? [String: Any] { 
      // access nested dictionary values by key 
      for (key, value) in nestedDictionary { 
       // access all key/value pairs in dictionary 
       print(key) 
       print(value) 
      } 
     } 
    } 
} catch { 
    print("Error -> \(error)") 
} 
+0

它再次顯示整個迴應 –

+0

檢查更新的答案,我忘了在循環中使用'nestedDictionary' –

+1

它的工作謝謝你。 –