我们如何在 iPhone 中处理动态 Web 服务?
Posted
技术标签:
【中文标题】我们如何在 iPhone 中处理动态 Web 服务?【英文标题】:How we can handle dynamic web service in iPhone? 【发布时间】: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。 您可以控制网络服务吗?还是第三方网络服务? 它是第三方网络服务。但是谁的网络服务无关紧要。问题是网络服务响应不断变化.. 【参考方案1】:你可以这样做
-
解析响应。如果响应是 JSON,那么您肯定会得到一个字典,只需保留它的引用即可。
您可以通过调用以下方法获取字典中的所有键
(NSArray *)allKeys
现在枚举上面的数组并访问每个键的值并做任何你想做的事情
但是您应该知道动态键的含义/用途。如果您没有键的含义/用途,这些步骤可能对您没有帮助……祝您好运。
【讨论】:
感谢回复,使用 [(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
【讨论】:
以上是关于我们如何在 iPhone 中处理动态 Web 服务?的主要内容,如果未能解决你的问题,请参考以下文章
如何在 iPhone 中使用 PhoneGap 调用基于 SOAP 的 Web 服务?
如何在动态 UITableView (iPhone) 中处理对 UITextFields 的引用