JSON схема для цели C - генерация классов моделей - PullRequest
15 голосов
/ 13 марта 2011

Привет, люди переполняют стек

Я пишу приложение для iphone, которое подключается к веб-службе через REST с JSON.Я хотел бы сгенерировать мои классы моделей в цели c из схемы json, предоставленной моим веб-сервисом, немного похоже на id, сделанный для wsdl2objc с комбинацией asoap, xml и wsdl.

Похоже, что не так уж многотам на эту тему

я попробовал что-то под названием jsonschema2objc.rb из http://code.google.com/p/bkjsonschema/, но это дает мне ошибки даже в самой простой схеме json, найденной здесь: http://en.wikipedia.org/wiki/JSON#Schema

Я получаю эту ошибку:
Использование временного файла /var/folders/rN/rNw33pkyHVeNG+-IesdU+k+++TI/-Tmp-/jsonschema2objc.8WRkBSQo !!!Определение объекта по индексу У продукта неизвестный тип

, поэтому вот мои 2 вопроса:

  • знаете ли вы, ребята, какой-нибудь хороший инструмент для достижения jsonchema => объективных классов C?
  • Вы знаете, что означает эта ошибка в моем ./jsonschema2objc.rb

Thx!

Ответы [ 12 ]

0 голосов
/ 05 февраля 2013

Предварительная запись кода модели - не самое гибкое решение. У вас могут быть умные модели, которые пытаются преобразовать ваш входящий JSON в определенные вами свойства. Посмотрите на среду JSONModel Obj-C.

В него входит множество демонстраций и тестов, и с ним очень легко писать модели:

https://github.com/icanzilb/JSONModel

0 голосов
/ 13 марта 2011

Если вы не можете найти сторонний инструмент, вы можете приблизиться к следующей идее.

JSON вернет вам словарь, похожий на загрузку plist?Вы могли бы реализовать класс-обертку, который содержит словарь и переопределяет два метода NSObject:

   -(BOOL) respondsToSelector:(SEL)selector
   -(id) performSelector:(SEL)selector

Если имя селектора находится в словаре, оно отвечает на селектор и при выполнении селектора возвращает объект, если этоobject - это словарь, который оборачивает этот словарь в класс обертки и возвращает его.

Теперь это не позволит вам получить хорошую информацию о типе, но вы сможете развернуть словарь следующим образом:

NSValue *universalGravity = (NSValue*) [[[jsonResponds settings] universal] gravity];

Просто идея, которая возникла у меня при чтении вашего вопроса, и я подумал, что это может быть быстрое, достаточно хорошее решение, если вы не можете найти стороннего разработчика, который уже внедрил то, что вы ищете.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...