2012-03-06 21 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