2012-03-06 2 views
2

Я изучаю некоторые сложные разработки в iPhone, и во время моих экспериментов я узнал, что обычно мы использовали локализованный веб-сервис, в котором все параметры фиксированы (ключевое слово). Если мой веб-сервис изменит некоторые поля в ответе, как мы можем работать с iPhone. Пожалуйста, помогите мне. Если у кого-то есть хорошая идея.Как мы можем работать с динамическим веб-сервисом в iPhone?

Для примера, Webservice Response1:

[    { 
      "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

+0

У вас есть контроль над webservice? или это сторонний веб-сервис? – Nilesh

+0

Это сторонний веб-сервис. Но это не вопрос, чей веб-сервис. Дело в том, что ответ веб-службы продолжает меняться. – Nit

ответ

0

Я не думаю, что это будет возможно, чтобы разобрать его полностью. По крайней мере, вы должны знать, какие ключи будут там. например ответ имеет Number, Number2 & Список как ключи. Это нормально, если в некоторых ответах нет одного или нескольких ключей.

С другой стороны, если знать все ключи заранее не представляется возможным, то в 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], мы можем получить только главный ключ. Например, если я использую этот метод для своего веб-сервиса, как указано выше, мы можем получить только «Номер», «Список». Где для внутренних ключей мы должны сделать еще один словарь и сделать все это снова.Событие, которое мы не знаем, есть ли какой-либо дополнительный словарь или нет. Он может быть сложным для вложенного веб-сервиса json. Это не правильное решение. Я попробовал это раньше. – Nit

+0

Ya вы правы, что это не правильно, но вы можете написать рекурсивный метод, который будет делать все это. Я не думаю, что для этого есть готовый api, вам нужно обрабатывать все это вручную. Я могу предложить только написать один метод, который может обрабатывать все возможности словарного массива любой вещи ..... удачи. – mithilesh

Смежные вопросы