2012-03-06 100 views
2

我正在學習iPhone的一些棘手的發展,並在我的實驗過程中發現,通常我們使用本地化的網絡服務,其中所有參數都是固定的(關鍵字)。如果我的Web服務將改變響應中的某些字段,而不是我們在iPhone中處理的內容。請幫幫我。如果任何人有任何好主意。我們如何處理iPhone中的動態Web服務?

例如, Webservice的響應1:

[    { 
      "Number":"A12 hrb", 
      "List":[ 
         { 
            "Type":"Works", 
            "Display":{ 
               "dop":45, 
               "dopper":56 
            }, 
            "OAST":"10-01-2012", 
            "OAET":"07-04-2012", 
            "Cause":"define", 
            "Impact":"Queue", 
            "Description":"Take a Break.", 
            "LName":"Lunetten To Lunetten", 
            "Number":"A12 hrb", 
         } 
      ]    },   ] 

Webservice的RESPONSE2:

[    { 
      "Number":"A12 hrb", 
     "Number2":"A13 brs", 
      "List":[ 
         { 
            "Type":"Works", 
            "Display":{ 
               "dop":45, 
               "dopper":56 
       "picker":90 
            }, 
            "OAST":"10-01-2012", 
      "MAET":"07-04-2012", 
            "OAET":"07-04-2012", 
            "Cause":"define", 
            "Impact":"Queue", 
            "Description":"Take a Break.", 
            "LName":"Lunetten To Lunetten", 
            "Number":"A12 hrb", 
         } 
      ]    },   ] 
+1

如果問題是如何解析JSON,請看看JSONKit。 – ssteinberg 2012-03-06 10:57:14

+0

你有控制web服務嗎?或者它是第三方的web服務? – Nilesh 2012-03-06 10:58:02

+0

這是第三方的網絡服務。但其無關緊要的是誰的網絡服務。事情是網絡服務響應不斷變化.. – Nit 2012-03-06 11:01:04

回答

0

我不認爲這將有可能完全解析它。至少你應該知道哪些鍵將在那裏。例如響應有Number,Number2 & List作爲鍵。如果某些響應不包含一個/一些密鑰,那沒關係。另一方面,如果事先知道所有的密鑰都不可能,那麼webservice應該有機制來傳達用於響應的密鑰。

例如

 [ { 
     "dynamic_keys": "Number2", 
     "Number":"A12 hrb", 
     "Number2":"A13 brs", 
     "List":[ 
     { 
      "Type":"Works", 
      "Display":{ 
       "dop":45, 
       "dopper":56 
       "picker":90
}, "OAST":"10-01-2012", "MAET":"07-04-2012", "OAET":"07-04-2012", "Cause":"define", "Impact":"Queue", "Description":"Take a Break.", "LName":"Lunetten To Lunetten", "Number":"A12 hrb", } ] }, ]

您可以讀取「dynamic_keys」的值,然後使用該值讀取實際動態密鑰的值。

編輯:正如ssteinberg所說,你可以使用一些像JSONKit這樣的框架來解析實際的JSON。 看到這個還有:How to parse JSON having dynamic key node

0

對於這種類型的情況下,你可以得到字典和詞典你 可以得到它的標籤你想要意味着你只需要根節點 和存儲根節點的所有值在字典中的數據並處理 字典進一步使用..

1

你可以做到這一點

  1. 解析response.If響應JSON然後肯定你會得到一本字典只是保持它的參考。
  2. 可以通過調用下面的方法
    • (NSArray的*)allKeys
  3. 下面列舉上述陣列和訪問值各自對每個鍵,做任何你想要得到在字典中的所有鍵

但是你應該知道動態鍵的含義/目的。如果你沒有鍵的意義/目的,這些步驟可能無法幫助你...祝你好運。

+0

感謝您的回覆,使用[(NSArray *)allKeys]方法,我們只能得到主鍵。就像,如果我使用這種方法爲我的Web服務,如上所述,我們只能得到「數量」,「列表」。內鍵的地方,我們必須製作另一個字典,並再次完成所有這些過程。事件我們不知道是否有任何子字典。它可能會變得複雜的嵌套JSON Web服務。這不是適當的解決方案,我已經嘗試過。 – Nit 2012-03-07 03:46:16

+0

雅你是正確的這是不正確的,但你可以寫一個遞歸方法,將做所有這些事情。我不認爲有任何爲此準備好的API,你需要手動處理所有這些。我可以建議只寫一種方法,可以處理所有可能性字典數組任何事情.....祝你好運。 – mithilesh 2012-03-07 10:16:33