【问题标题】:How we can handle dynamic web service in iPhone?我们如何在 iPhone 中处理动态 Web 服务?
【发布时间】:2012-03-06 10:48:53
【问题描述】:

我在 iPhone 中学习一些棘手的开发,在我的实验中我发现通常我们使用本地化的 Web 服务,其中所有参数都是固定的(关键字)。如果我的网络服务将更改响应中的某些字段,而不是我们如何在 iPhone 中处理。请帮我。如果有人有什么好主意。

例如, Web服务响应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",
         }
      ]    },   ]

Web 服务响应 2:

[    {
      "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",
         }
      ]    },   ]

【问题讨论】:

  • 如果问题是如何解析 JSON,看看 JSONKit。
  • 您可以控制网络服务吗?还是第三方网络服务?
  • 它是第三方网络服务。但是谁的网络服务无关紧要。问题是网络服务响应不断变化..

标签: iphone xcode json web-services dynamic


【解决方案1】:

你可以这样做

  1. 解析响应。如果响应是 JSON,那么您肯定会得到一个字典,只需保留它的引用即可。
  2. 您可以通过调用以下方法获取字典中的所有键
    • (NSArray *)allKeys
  3. 现在枚举上面的数组并访问每个键的值并做任何你想做的事情

但是您应该知道动态键的含义/用途。如果您没有键的含义/用途,这些步骤可能对您没有帮助……祝您好运。

【讨论】:

  • 感谢回复,使用 [(NSArray *)allKeys] 方法我们只能得到主键。就像,如果我将这种方法用于上面提到的 Web 服务,那么我们只能得到“数字”、“列表”。对于内部键,我们必须制作另一个字典并再次执行所有这些过程。事件我们不知道是否有任何子字典。嵌套 json Web 服务可能会变得复杂。这不是正确的解决方案。我之前尝试过。
  • 是的,你是对的,这是不正确的,但你可以编写一个递归方法来完成所有这些事情。我认为没有任何现成的 api,您需要手动处理所有这些。我只能建议编写一种可以处理所有可能性字典数组的方法.....祝你好运。
【解决方案2】:

对于这种情况,您可以获取字典并在字典中您 可以得到你想要的标签的值意味着你只需要根节点 并将根节点的所有数据存储在字典中并处理 字典供进一步使用..

【讨论】:

    【解决方案3】:

    我认为不可能完全解析它。至少你应该知道哪些键将在那里。例如响应具有 Number、Number2 和 List 作为键。如果某些响应不包含一个/某些键,则可以。

    另一方面,如果事先知道所有的密钥是不可能的,那么 web 服务应该有机制来传递响应中使用的密钥。

    例如

    [ { "dynamic_keys": "Number2", "数字":"A12 hrb", "Number2":"A13 brs", “列表”:[ { “类型”:“作品”, “展示”:{ “dop”:45, “掺杂”:56 “选择器”:90
    }, “敬酒”:“2012 年 10 月 1 日”, "MAET":"07-04-2012", "OAET":"07-04-2012", “原因”:“定义”, “影响”:“队列”, "描述":"休息一下。", "LName":"Lunetten To Lunetten", "数字":"A12 hrb", } ] }, ]

    您可以读取“dynamic_keys”的值,然后使用该值可以读取实际动态键的值。

    edit:正如 ssteinberg 所提到的,您可以使用 JSONKit 之类的框架来解析实际的 JSON。 另请参阅:How to parse JSON having dynamic key node

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-03-29
      • 1970-01-01
      • 2015-11-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多